所以我制作了一个exe文件,该文件可以运行到需要打开并写入csv文件的位置,错误是:
FileNotFoundError:[错误2]没有这样的文件或目录:'P:\\ myfile \\ directory \\ sheet.csv'
[5520]无法执行脚本sheetcsv
该目录确实存在,并且该脚本在调试模式下或从python shell执行时才执行,只有在exe格式时它才会失败。
我还注意到它在目录之间打印\\
,这在我的脚本中不是这样。
我有一个理论是,exe文件无法写入共享的网络驱动器。
我正在Windows 10,python3.7上运行
我的代码是:
with open('P:\my\directory\sheet.csv', 'a', newline='') as csvfile:
答案 0 :(得分:1)
您应该将其更改为:
with open('P:/my/directory/sheet.csv', 'a', newline='') as csvfile:
请注意从\
更改为/
Python字符串将反斜杠视为转义字符。您有很多选择:
将\
替换为/
使用\\
使用原始文字,即:r"P:\my\directory\sheet.csv"
使用os.path.sep
使用os.path.join
等。
在您的情况下,我想说的最简单的方法就是将\
替换为/
,作为我给您的示例。
仅作为示例,请尝试以下操作:
print("mydir\nothing\table.csv")
输出:
P:\mydir
othing able
,您将看到输出不是您最初期望的,因为\n
和\t
已转换为特殊字符:)
通常,除非确定会发生什么情况,否则避免在字符串中使用反斜杠\
。以/
分隔的目录将得到正确处理。