2015-10-26 46 views
2

所以我想为我的一个python程序做一个可执行文件。我需要访问我的可执行文件所在文件夹中的文件。由于此文件可能会移动,因此我正在使用import os; current_dir = os.getcwd()Python os.list_dir停止一级短

当我通过终端运行程序python filename.py和I print current_dir时,我得到/Users/User/Desktop/Executable/

当我通过Finder(我在OS X上)通过终端打开.py运行可执行文件并打印current_dir时,我得到/Users/User。注意,这没有我需要的其他2个级别,即Desktop/Executable。为何会发生这种情况?

备注:这只是一个一次性的,快速的可执行文件,并不意味着要长时间使用,但是必要的,所以使.py可执行文件符合我们的目的。这由chmod +x filename.py完成。

答案,可以按照选定的回答这个问题的意见中找到的是:

import os 
import sys 
if hasattr(sys, 'frozen'): 
    basis = sys.executable 
else: 
    basis = os.path.dirname(sys.argv[0]) 
+0

因为您的工作目录不同,请将完整路径传递到目录 –

+0

https://github.com/glue-viz/glue-bot/问题/ 2这个问题可能会有所帮助...... – Busturdust

回答

1

这应该得到适当的文件,它会返回可执行文件的路径或脚本的路径。

if hasattr(sys, 'frozen'): 
    basis = sys.executable 
else: 
    basis = sys.argv[0] 

如果您尝试chaning的要不然这不工作:部分

os.path.dirname(os.path.realpath("__file__"))

编辑:明明:import sys

可执行文件会增加一个冰冻属性,检查之前,该属性检查工作目录。冻结的应用程序可能会运行python.exe,它将以不同的方式解析您的工作目录

+0

即使有了这个,并且改变'else',我仍然会得到相同的行为。嗯。我会继续玩这个。谢谢。我会说终端打开带有终端的.py命令时是'/Users/User/Desktop/Executable/filename.py;退出;'。我不知道这是否有用。 –

+0

这是python文件实际存在的地方吗?比不正确? – Busturdust

+0

.py文件存在'/ Users/User/Desktop/Executable/filename.py'。 –

0

当前工作目录并不一定是该文件实际上位于同一目录中。要获得实际的文件的路径,你可以使用:

os.path.dirname(os.path.realpath("__file__")) 
0

为os.getcwd的文档()说:返回代表当前工作目录的字符串。当前工作目录可能不是python脚本所在的位置。 你应该检查一个函数的文档,它会给你脚本的目录,而不是工作目录,这可能是不同的。