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

cod*_*des 12 python python-3.4

让我先说一下,我不确定我的代码发生了什么; 我对编程很新.

我一直致力于为我的python CS课程创建一个单独的最终项目,每天检查我的老师的网站,并确定自上次程序运行以来他是否更改了他网站上的任何网页.

我现在正在做的步骤如下:

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))
Run Code Online (Sandbox Code Playgroud)

链接看起来类似于:

/网站/网站名称/等级/最终代码

我得到的错误如下:

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

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

Pad*_*ham 8

你不能/在unix或windows上的文件basename中,你可以替换/.:

page.replace("/",".") + ".txt"
Run Code Online (Sandbox Code Playgroud)

Python假设/site等..是一个目录.

  • macOS 在这里有点奇怪;它允许您在文件名中使用“/”,因为在幕后,HFS 使用“:”作为路径分隔符。如果您创建的文件名称中包含冒号,Finder 会将其显示为斜杠。 (2认同)

Fle*_*ija 5

在 Unix/Mac OS 上,对于中间的斜杠,您可以使用:which 将/在查看时转换为,但会触发这样/做的子文件夹。

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


Rec*_*nic 5

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

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