我正在尝试制作一个程序,该程序使用.txt文件中的单词,然后创建一个仅包含超过5个字母的单词的新.txt文件。为此,我有两次with open
命令。这是我到目前为止的代码。
iteration=0
while iteration < 101:
with open(r"C:\Users\user\Documents\filename.txt", "r") as file1:
inputwords=file1.readlines()[1]
wordtest=list(inputwords)
wordstr=''.join(wordtest)
words=len(wordtest)
if words>=5:
print(wordstr + " is longer then 5 letters")
with open(r"C:\Users\user\Desktop\newfile.txt", "a") as file:
file.write("\n" +wordstr)
iteration+=1
运行时,它会给我一个 OSError ,但是当我删除第一个with open
时,它并没有给我一个OSError,并且工作正常。我正在使用Windows 10,错误消息是:
OSError:[Errno 22]无效的参数:'\ u202aC:\ Users \ user \ Documents \ filename.txt'
另外,我尝试使用双反斜杠,并且得到相同的错误。这在其他脚本中也发生过,在某些情况下,每隔几次我尝试打开该脚本即可正常运行,而在其他情况下,它返回了 OSError
答案 0 :(得分:0)
您传入的文件路径可能是问题所在。
根据您的代码,您将路径传递为
with open(r"C:\Users\\Documents\filename.txt", "r") as file1:
如果您将原始字符串作为路径传递,则只需在语句中提供如下所示的路径即可,而不要使用双反斜杠。
with open(r"C:\Users\Documents\filename.txt", "r") as file1:
或者您可以简单地使用单斜杠
c:/users/path
或双反斜杠(给出两次,以避免反斜杠作为转义序列的特殊含义)
c:\\users\\path