为什么我的exe文件未遵循脚本中的指定路径?

时间:2019-01-08 12:24:06

标签: python directory exe

所以我制作了一个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:

1 个答案:

答案 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已转换为特殊字符:)

通常,除非确定会发生什么情况,否则避免在字符串中使用反斜杠\。以/分隔的目录将得到正确处理。