如何转义 python 中的正斜杠,以便 open() 将我的文件视为要写入的文件名,而不是要读取的文件路径?

How do I escape forward slashes in python, so that open() sees my file as a filename to write, instead of a filepath to read?

首先让我说我不确定我的代码发生了什么;我对编程很陌生。

我一直在为我的 python CS class 创建一个个人期末项目,该项目每天检查我老师的网站并确定他是否更改了他的任何网页网站自上次节目后运行还是不行。

我现在正在处理的步骤如下:

def write_pages_files():
    '''
    Writes the various page files from the website's links 
    '''
    links = get_site_links()
    for page in links:
        site_page = requests.get(root_url + page)
        soup = BeautifulSoup(site_page.text)
        with open(page + ".txt", mode='wt', encoding='utf-8') as out_file:
            out_file.write(str(soup))

链接看起来类似于:

/site/sitename/class/final-code

而我得到的错误如下:

with open(page + ".txt", mode='wt', encoding='utf-8') as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'

如何使用这些类型的名称 (/site/sitename/nameofpage.txt) 编写网站页面?

你不能在 unix 或 windows 上的文件基名中包含 /,你可以将 / 替换为 .:

page.replace("/",".") + ".txt"

Python 假定 /site etc.. 是一个目录。

在 Unix/Mac OS 上,对于中间的斜杠,您可以使用 :,这将在查看时转换为 /,但会触发 [=11] 的子文件夹=] 确实如此。

site/sitename/class/final-code -> final-code 文件在 class 文件夹中 在 sitename 文件夹中 在当前文件夹中的 site 文件夹中 site:sitename:class:final-code -> site/sitename/class/final-code 当前文件夹中的文件。

与问题的标题有关,虽然不是细节,如果你真的希望你的文件名包含一些看起来像斜线的东西,你可以使用unicode字符“∕”(DIVISION SLASH),又名 u'\u2215'

这在大多数情况下都没有用(并且可能会造成混淆),但当您希望包含在文件名中的概念的标准命名法包含斜杠时,它会很有用。