Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python os.list_dir短停一级_Python_Macos_Python 2.7_Executable - Fatal编程技术网

Python os.list_dir短停一级

Python os.list_dir短停一级,python,macos,python-2.7,executable,Python,Macos,Python 2.7,Executable,因此,我试图为我的一个python程序创建一个可执行文件。我需要访问可执行文件所在文件夹中的文件。因为这个文件可能会被移动,所以我使用的是import操作系统;当前目录=os.getcwd() 当我使用python filename.py通过终端运行程序,并打印当前目录时,我得到/Users/User/Desktop/Executable/ 当我通过Finder打开.py with terminal来运行可执行文件时(我在OSX上),并且打印了当前目录,我得到/Users/User。注意,这没有

因此,我试图为我的一个python程序创建一个可执行文件。我需要访问可执行文件所在文件夹中的文件。因为这个文件可能会被移动,所以我使用的是
import操作系统;当前目录=os.getcwd()

当我使用
python filename.py
通过终端运行程序,并打印当前目录时,我得到
/Users/User/Desktop/Executable/

当我通过Finder打开.py with terminal来运行可执行文件时(我在OSX上),并且打印了
当前目录
,我得到
/Users/User
。注意,这没有我需要的其他两个级别,即
桌面/可执行文件
。为什么会发生这种情况

备注:这只是一个一次性的、快速的可执行文件,不打算长时间使用,但却是必要的,因此制作.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__"))

getcwd()的文档说明:返回表示当前工作目录的字符串。当前工作目录可能不是python脚本所在的位置。
您应该检查文档中的函数,该函数将为您提供脚本的目录,而不是可能不同的工作目录。

这将为您提供适当的文件,它将返回可执行文件的路径或脚本的路径

if hasattr(sys, 'frozen'):
    basis = sys.executable
else:
    basis = sys.argv[0]
如果这对您不起作用,请尝试将else:部分更改为

os.path.dirname(os.path.realpath(“\uu文件”)

编辑:显然:
import sys


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

,因为您的工作目录不同,将完整路径传递到该目录此问题可能会有所帮助…即使这样,并且更改
else
,我仍然会得到相同的行为。嗯,我会继续玩这个。非常感谢。我会说,当我用终端打开.py时,终端运行的命令是
/Users/User/Desktop/Executable/filename.py;退出。我不知道这是否有用。python文件实际存在于此吗?不是吗?该.py文件存在于
/Users/User/Desktop/Executable/filename.py
。运行该可执行文件仍然会给您提供错误的路径?我得到了答案。我实验室的一个家伙帮了我。答案是在
else
中执行
basis=os.path.dirname(sys.argv[0])