Python os.list_dir 止空一级
Python os.list_dir stopping one level short
所以我正在尝试为我的 python 程序之一制作可执行文件。我需要访问我的可执行文件所在文件夹中的文件。因为这个文件可能会被移动,所以我使用 import os; current_dir = os.getcwd()
。
当我 运行 通过终端 python filename.py
和 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])
当前工作目录不一定是文件实际所在的目录。要获取实际文件的路径,您可以使用:
os.path.dirname(os.path.realpath("__file__"))
os.getcwd() 的文档说:Return 表示当前工作目录的字符串。当前工作目录可能不是 python 脚本所在的位置。
您应该查看文档中的函数,该函数将为您提供脚本的目录,而不是工作目录,这可能会有所不同。
这应该会为您提供适当的文件,它将 return 可执行文件的路径或脚本的路径。
if hasattr(sys, 'frozen'):
basis = sys.executable
else:
basis = sys.argv[0]
如果这对您不起作用,请尝试将 else: 部分更改为
os.path.dirname(os.path.realpath("__file__"))
编辑:显然:import sys
可执行文件将添加冻结属性,在检查工作目录之前检查该属性。冻结的应用程序可能 运行 反对 python.exe 这将以不同的方式解析您的工作目录
所以我正在尝试为我的 python 程序之一制作可执行文件。我需要访问我的可执行文件所在文件夹中的文件。因为这个文件可能会被移动,所以我使用 import os; current_dir = os.getcwd()
。
当我 运行 通过终端 python filename.py
和 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])
当前工作目录不一定是文件实际所在的目录。要获取实际文件的路径,您可以使用:
os.path.dirname(os.path.realpath("__file__"))
os.getcwd() 的文档说:Return 表示当前工作目录的字符串。当前工作目录可能不是 python 脚本所在的位置。 您应该查看文档中的函数,该函数将为您提供脚本的目录,而不是工作目录,这可能会有所不同。
这应该会为您提供适当的文件,它将 return 可执行文件的路径或脚本的路径。
if hasattr(sys, 'frozen'):
basis = sys.executable
else:
basis = sys.argv[0]
如果这对您不起作用,请尝试将 else: 部分更改为
os.path.dirname(os.path.realpath("__file__"))
编辑:显然:import sys
可执行文件将添加冻结属性,在检查工作目录之前检查该属性。冻结的应用程序可能 运行 反对 python.exe 这将以不同的方式解析您的工作目录