1

使用 py2app 将 y .py 转换为 .app。乍一看,它看起来不错,但是当我去执行 open() 和 f.write (如下)创建一个 .txt 时,它不会创建文件。

f = open(name + ".txt", "w")
f.write("users inputs here")

当我将程序作为 .py 运行时,这绝对可以正常工作

任何人都有任何想法,我似乎找不到任何解释为什么会发生这种情况的东西。

4

3 回答 3

4

问题是当前目录设置为/从 Finder 启动应用程序时的目录。因此,路径是相对于/,而不是您的应用程序包。

要获取 Python exe 的路径,请尝试sys.executable. 请注意,您可能需要添加../../才能退出Contents/MacOS目录。

但是,更好的解决方案可能是简单地使用文件对话框,允许用户选择保存位置。

于 2012-10-23T02:34:04.520 回答
0

我的程序遇到了同样的问题,我打开一个文件并将列标题写入该文件,然后在程序中循环迭代数据。当应用程序转换为 .app 时,程序在到达将列标题写入文件时会失败。如果我将其注释掉,它将正常工作。我从列标题中的文本中删除了所有特殊字符,它工作正常。不知道为什么会这样。

不起作用:

file.write("\n" + "Image" + "\t" + "x (pxl)" + "\t" + "y (pxl)" + "\t" + "radius (ID; µm)" + "\t" + "GlobalThresh Reported:" + "\n")

作品:

file.write("\n" + "Image" + "\t" + "x" + "\t" + "y" + "\t" + "radius" + "\t" + "GlobalThresh Reported" + "\n")
于 2020-03-23T20:34:50.910 回答
0

一个实现 sys.executable 的实用解决方案,正如@nneonneo 所说的那样;这个对我有用:

location = os.path.abspath(
        os.path.join(sys.executable + "/file_name", '..', '..', '..', '..','..', "file_name"))

它将文件打印在 .app 文件夹的上一层

于 2020-10-23T21:16:49.233 回答