【问题标题】:Executable file from Python script can't write to the filePython脚本中的可执行文件无法写入文件
【发布时间】:2019-12-28 07:22:07
【问题描述】:

我有一个 python 代码,可以将一些输出以文本形式写入定义的输出文件。在 PyCharm 中,我的脚本可以正常工作,但是当我使用 pyinstaller 将我的 xx.py 转换为 .exe 文件时,exe 文件无法写入已经在同一路径中的输出文件。

要编写输出,我使用以下代码:

fg = open('input.src')
output_file = open("output.obj", "w")
for line in fg:
**do something**
output_file = open("output.obj", "a")
output_file.write("[" + str(hex(memory_location)) + "]" + "  " + output + "\n")

我还尝试了不带 PyCharm 的 xx.py,带控制台,脚本运行良好。

【问题讨论】:

  • “不能写”怎么样?您收到错误消息吗?它只是默默地失败吗?运行可执行文件时会发生什么?
  • @mypetlion,在代码中我使用 'try: .... except Exception: print("error")' 没有它,Windows 控制台立即关闭。否则显示异常打印
  • 试试这个,让我知道输出是什么:try: ... except Exception as e: print(e)
  • @mypetlion 'utf-8' 编解码器无法解码位置 19 中的字节 0x96:无效的起始字节。有了这个错误,我发现了问题。我需要将输入编码更改为 UTF-8。非常感谢!
  • 很高兴能帮上忙!

标签: python-3.x pycharm


【解决方案1】:

当我将其转换为 .exe 文件时...

不清楚你指的是什么转换过程。

PyCharm 确实将标准 python 解释器作为子进程运行。 在您的问题案例中,听起来您可能正在运行 cython 或其他不寻常的语言环境。

你写道:

output_file = open("output.obj", "w")
...
output_file = open("output.obj", "a")

您选择不使用with 成语。 更重要的是,您在重新打开之前选择不output_file.close()。 您的语言解释器 + 文件系统的组合可能需要在随后打开之前关闭。

【讨论】:

    【解决方案2】:

    感谢@mypetlion,问题是由输入文件的编码引起的,即 ANSI。需要转成UTF-8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      相关资源
      最近更新 更多