【问题标题】:os.path.isfile() returns false for existing Windows fileos.path.isfile() 为现有的 Windows 文件返回 false
【发布时间】:2015-04-25 09:19:53
【问题描述】:

出于某种原因,os.path.isfile() 偶尔会为某些现有 Windows 文件返回 false。起初,我认为文件名中的空格引起了问题,但其他带有空格的文件路径工作正常。以下是说明此问题的 Python 控制台副本:

>>> import os
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\bing.ico")
False
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\PinnedSiteLogo.contrast-black_scale-80.png")
True

我该如何解决这个问题?

【问题讨论】:

    标签: python


    【解决方案1】:

    \b 在字符串中表示退格。如果您想要字符串中的实际反斜杠,则需要使用更多反斜杠对其进行转义(\\ 而不是 \),或者您需要使用原始字符串(r"..." 而不是 "...")。对于文件路径,我建议使用正斜杠。

    【讨论】:

    • 以下工作:>>> os.path.isfile(r"C:\Program Files\Internet Explorer\images\bing.ico") True 但是,路径在变量中,我不能将 r 与变量一起使用。
    • @NemoXXX 应该是真的。等于'C:\\Program Files\\Internet Explorer\\images\\bing.ico
    • @skyline75489: 以 r 为前缀的路径返回 true,但我需要一个函数,因为路径是变量,os.path.normpath() 返回 'C:\\Program Files\\Internet Explorer\\images\x08ing.ico',这不起作用,因为小写 b 是 \ xAA。
    • @NemoXXX:除了源代码中的字符串文字,大多数获取字符串的方法都不会处理转义序列的反斜杠。如果此字符串最终来自某处的字符串文字,请修复您的字符串文字。如果没有,那就找到绳子被搞砸的地方并修复它。
    • @user2357112:与 r 前缀等效的 Python 函数是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2019-11-14
    • 2015-05-05
    • 2017-08-02
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多