【问题标题】:Why does my exe file not follow a specified path in the script?为什么我的 exe 文件不遵循脚本中的指定路径?
【发布时间】:2019-01-09 15:12:37
【问题描述】:

所以我制作了一个 exe 文件,该文件将运行到需要打开并写入 csv 文件的地步,错误是:

FileNotFoundError: [Errno 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:

【问题讨论】:

  • 您能否发布您正在使用的与此错误相关的代码?很可能您的字符串中有转义问题
  • @purpletentacle 我已将脚本的相关部分添加到问题中,正如我所说,这在 Visual stuido、python shell 和编译后的 python 文件中运行良好。

标签: python directory exe


【解决方案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 已被转换为特殊字符:)

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

【讨论】:

  • 为了完整起见:根据等。一种常见的选择是使用“原始”字符串文字r"P:\my\directory\sheet.csv"
  • 感谢您的建议!我又添加了一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2020-04-22
  • 1970-01-01
相关资源
最近更新 更多