使用py2app将y .py转换为.app。在第一次看起来它看起来很好但是当我去执行open()和f.write(如下所示)来创建.txt它不会创建文件。
f = open(name + ".txt", "w")
f.write("users inputs here")
当我以.py
运行程序时,这非常正常任何人都有任何想法,我似乎找不到任何可以解释为什么会这样的事情。
答案 0 :(得分:3)
问题是当从Finder启动应用程序时,当前目录设置为/
。因此,路径相对于/
,而不是您的应用包。
要获取Python exe的路径,请尝试sys.executable
。请注意,您可能需要添加../../
才能退出Contents/MacOS
目录。
但是,更好的解决方案可能是简单地使用文件对话框,允许用户选择保存位置。
答案 1 :(得分:0)
我的程序遇到了同样的问题,我打开一个文件并将列标题写入该文件,然后在程序中稍后以循环方式将数据迭代到该文件中。当应用程序转换为.app时,程序到达文件的写入列标题时将失败。如果我将其注释掉,它将可以正常工作。我从列标题中的文本中删除了所有特殊字符,效果很好。不知道为什么会这样。
不起作用:
RefNum IDOrder ID DetailDesc HRs
43 1 110011 Test detail 1. 1.5
43 2 220022 Test detail 1. 1.5
43 3 330033 Test detail 1. 1.5
43 1 110011 Test detail 2. 0.75
43 2 220022 Test detail 2. 0.75
43 3 330033 Test detail 2. 0.75
43 1 110011 Test detail 3. 1.25
43 2 220022 Test detail 3. 1.25
43 1 110011 Test detail 4. 1.5
43 2 220022 Test detail 4. 1.5
43 1 110011 Test detail 5. 0.5
43 1 110011 Test detail 6. 2
有效:
file.write("\n" + "Image" + "\t" + "x (pxl)" + "\t" + "y (pxl)" + "\t" + "radius (ID; µm)" + "\t" + "GlobalThresh Reported:" + "\n")
答案 2 :(得分:0)
一个实现sys.executable的实用解决方案,因为@nneonneo状态可以是这个;它对我有用:
location = os.path.abspath(
os.path.join(sys.executable + "/file_name", '..', '..', '..', '..','..', "file_name"))
将文件打印到.app文件夹正上方的一级