相关疑难解决方法(0)

如何在Python中获取当前文件目录的完整路径?

我想获取当前文件的目录路径.
我试过了:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Run Code Online (Sandbox Code Playgroud)

但是如何检索目录的路径?例如:

'C:\\python27\\'
Run Code Online (Sandbox Code Playgroud)

python directory

677
推荐指数
9
解决办法
101万
查看次数

如何获取当前正在执行的文件的路径和名称?

我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.

例如,假设我有三个文件.使用execfile:

  • script_1.py电话script_2.py.
  • 反过来,script_2.py打电话script_3.py.

我怎样才能获得的文件名和路径script_3.py,从内部代码script_3.py,而无需从传递这些信息作为参数script_2.py

(执行os.getcwd()返回原始起始脚本的文件路径而不是当前文件的.)

python scripting file

462
推荐指数
16
解决办法
51万
查看次数

如何在Python中获取当前执行文件的路径?

这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:

sys.argv中[0]

这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.

__文件__

这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:

  • py2exe没有__file__属性,但有一个解决方法
  • 从IDLE运行时execute()没有__file__属性
  • OS X 10.6我得到的地方 NameError: global name '__file__' is not defined

回答不完整的相关问题:

我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.

更新

这是测试用例的结果:

输出python a.py(在Windows上)

a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz

b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
Run Code Online (Sandbox Code Playgroud)

a.py

#! /usr/bin/env python
import os, sys

print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print …
Run Code Online (Sandbox Code Playgroud)

python directory path

183
推荐指数
8
解决办法
12万
查看次数

确定pyInstaller生成的Python EXE中的应用程序路径

我有一个驻留在单个.py文件中的应用程序.我已经能够让pyInstaller成功地将它捆绑到一个EXE for Windows中.问题是,应用程序需要一个始终位于同一目录中的应用程序旁边的.cfg文件.

通常,我使用以下代码构建路径:

import os
config_name = 'myapp.cfg'
config_path = os.path.join(sys.path[0], config_name)
Run Code Online (Sandbox Code Playgroud)

但是,当从pyInstaller生成的EXE调用sys.path时,它似乎是空白的.当您运行python交互式命令行并尝试获取sys.path [0]时,会发生同样的行为.

有没有更具体的方法来获取当前运行的应用程序的路径,以便我可以找到相对于它的文件?

python executable relative-path pyinstaller

50
推荐指数
5
解决办法
4万
查看次数

如何在py2exe中获取可执行文件的当前目录?

我在脚本中使用这段代码以跨平台的方式确定运行的确切位置:

SCRIPT_ROOT = os.path.dirname(os.path.realpath(__file__))
Run Code Online (Sandbox Code Playgroud)

很简单.然后我继续在SCRIPT_ROOT我的脚本的其他区域使用,以确保一切都是正确的相对.我通过py2exe运行时出现问题,因为生成的可执行文件未设置__file__,因此我的脚本中断.有谁知道如何解决或解决这个问题?

python py2exe

17
推荐指数
3
解决办法
1万
查看次数

如何知道Python中运行脚本的路径?

我的script.py在与脚本相同的目录中创建一个临时文件.

运行时:

python script.py
Run Code Online (Sandbox Code Playgroud)

它只是文件

但是当你运行时它不起作用:

python /path/to/script.py
Run Code Online (Sandbox Code Playgroud)

那是因为我在script.py中使用了临时文件的相对路径而不是绝对路径.问题是我不知道它将在哪条路上运行,所以我需要一种方法来知道这一点.

关于什么?

os.path.abspath(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)

python path

4
推荐指数
2
解决办法
7924
查看次数

如何查找从linux上的符号链接执行时正在运行的脚本的文件名

如果我有一个通过符号链接执行的python脚本,有没有办法可以找到脚本的路径而不是符号链接?我已尝试使用问题中建议的方法,但它们始终返回符号链接的路径,而不是脚本.

例如,当它保存为我的"/usr/home/philboltt/scripts/test.py"时:

#!/usr/bin/python

import sys

print sys.argv[0]
print __file__
Run Code Online (Sandbox Code Playgroud)

然后我创建了这个符号链接

ln -s /usr/home/philboltt/scripts/test.py /usr/home/philboltt/test
Run Code Online (Sandbox Code Playgroud)

并使用执行脚本

/usr/home/philboltt/test
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

/usr/home/philboltt/test
/usr/home/philboltt/test
Run Code Online (Sandbox Code Playgroud)

谢谢!菲尔

python linux filenames symlink

4
推荐指数
1
解决办法
1033
查看次数