如何解决Python向用户输入文件路径添加反斜杠和引号,不会打开
使用 Python 3.9,我想“输入”一个文件路径(通过输入函数)。然后我想打开那个文件路径。我受到以下错误的阻碍:
OSError: [Errno 22] Invalid argument: "'C:\\\\Users\\\\Hart\\\\Documents\\\\File.txt'"
我想知道为什么。
这是我所知道的:我有一个文件路径。根据os.path.exists,文件路径存在。
>>> os.path.exists("C:\\Users\\Hart\\Documents\\File.txt")
True
我可以打开文件。
>>> open("C:\\Users\\Hart\\Documents\\File.txt")
<_io.TextIOWrapper name='C:\\Users\\Hart\\Documents\\File.txt' mode='r' encoding='cp1252'>
>>> anything = "C:\\Users\\Hart\\Documents\\File.txt"
>>> os.path.exists(anything)
True
>>> open(anything)
<_io.TextIOWrapper name='C:\\Users\\Hart\\Documents\\File.txt' mode='r' encoding='cp1252'>
>>> file = input('Enter a file path\n')
Enter a file path
'C:\\Users\\Hart\\Documents\\File.txt'
>>> print(file)
'C:\\Users\\Hart\\Documents\\File.txt'
但是当我尝试打开它时...
OSError: [Errno 22] Invalid argument: "'C:\\\\Users\\\\Hart\\\\Documents\\\\File.txt'"
这个变量所代表的文件也不存在。
>>> os.path.exists(file)
False
怎么回事?
解决方法
如 String and Bytes Literals 中所述,python 字符串文字识别以反斜杠 (\) 开头的转义序列,以对换行符 (\n)、十六进制值 (\x03) 等内容进行编码。请注意,这些规则适用于字符串literals,即python源代码中的字符串,在使用前被python编译。
从其他来源读取的字符串不是文字,也不遵循这些规则。所以,python源代码中的一个字符串
file = "C:\\Users\\Hart\\Documents\\File.txt"
真的
C:\Users\Hart\Documents\File.txt
记忆中。很难发现这一点,因为当您显示字符串时,python 可能会向您显示字符串的转义文字表示。您可以通过一个快速的 shell 示例看到不同之处
>>> test = "C:\\Users\\Hart\\Documents\\File.txt"
>>> test
'C:\\Users\\Hart\\Documents\\File.txt'
>>> print(test)
C:\Users\Hart\Documents\File.txt
当你 input()
文本时,那是真正的文本,不是字符串文字。 Windows 不需要引号或额外的反斜杠。所以,
>>> file = input('Enter a file path\n')
Enter a file path
C:\Users\Hart\Documents\File.txt
>>> print(file)
C:\Users\Hart\Documents\File.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。