SyntaxError when trying to use backslash for Windows file path

前端 未结 3 1809
灰色年华
灰色年华 2021-01-18 22:22

I tried to confirm if a file exists using the following line of code:

os.path.isfile()

But I noticed if back slash is used by copy&past

相关标签:
3条回答
  • 2021-01-18 22:52

    You get the problem with the 2 character sequences \x and \U -- which are python escape codes. They tell python to interpret the data that comes after them in a special way (The former inserts bytes and the latter unicode). You can get around it by using a "raw" string:

    os.path.isfile(r"C:\Users\xxx\Desktop\xxx")
    

    or by using forward slashes (as, IIRC, windows will accept either one).

    0 讨论(0)
  • 2021-01-18 22:54

    Backslash is the escape symbol. This should work:

    os.path.isfile("C:\\Users\\xxx\\Desktop\\xxx")
    

    This works because you escape the escape symbol, and Python passes it as this literal:

    "C:\Users\xxx\Desktop\xxx"
    

    But it's better practice and ensures cross-platform compatibility to collect your path segments (perhaps conditionally, based on the platform) like this and use os.path.join

    path_segments = ['/', 'Users', 'xxx', 'Desktop', 'xxx']
    os.path.isfile(os.path.join(*path_segments))
    

    Should return True for your case.

    0 讨论(0)
  • 2021-01-18 22:54

    Because backslashes are escapes in Python. Specifically, you get a Unicode error because the \U escape means "Unicode character here; next 8 characters are a 32-bit hexadecimal codepoint."

    If you use a raw string, which treats backslashes as themselves, it should work:

    os.path.isfile(r"C:\Users\xxx\Desktop\xxx")
    
    0 讨论(0)
提交回复
热议问题