我正在写这个简单的代码:
file = input('File to read: ')
fhand = open(file, 'r')
我要打开的文件名为“test.txt”,它位于子文件夹中;因此,我在请求的输入中输入的是:“DB\test.txt”。
嗯:它不起作用,返回此错误消息:
OSError: [Errno 22]Invalid argument: 'DB\test.txt'.
我在同一目录中有另一个文件,名为“my_file.txt”,并且尝试打开它时没有遇到错误。最后,我还有另一个文件,名为“new_file.txt”,这个文件也给我带来了同样的错误。
对我来说显而易见的是 open() 函数读取“\t”和“\n”,就好像它们是特殊字符一样;在网上搜索时,我发现没有任何东西可以真正帮助我避免用户输入字符串中的特殊字符......
有人可以帮忙吗?
Thanks!
使用 Python 3 和你的确切代码不会有任何问题(这个问题在传递 windows 时经常遇到)literal字符串其中r
需要前缀)。
使用 python 2,首先您必须用引号将文件名括起来,然后将解释所有特殊字符(\t
, \n
...)。除非你输入r"DB\test.txt"
使用我之前提到的这个原始前缀,但它开始变得很麻烦:)
所以我建议使用raw_input
(并且不要输入带引号的文本)。或者使用与 python 版本无关的版本来覆盖不安全的版本input
仅适用于 python 2:
try:
input = raw_input
except NameError:
pass
那么你的代码将正常工作,并且作为奖励你摆脱了代码中可能的代码注入(请参阅 python 2 特定主题:使用 Python 的输入而不是 raw_input 有用吗?).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)