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

How to know the path of the running script in Python?

my script.py在脚本所在的目录中创建一个临时文件。

运行时:

1
python script.py

它只起作用文件

但当你跑步时,它不起作用:

1
python /path/to/script.py

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

怎么样?

1
os.path.abspath(os.path.dirname(__file__))

根据Python的伟大潜入:

1
2
3
4
5
6
import sys, os

print 'sys.argv[0] =', sys.argv[0]             1
pathname = os.path.dirname(sys.argv[0])        2
print 'path =', pathname
print 'full path =', os.path.abspath(pathname)


目前的两个答案反映了你问题的模糊性。

运行python /path/to/script.py后,您希望将tempfile放在哪里?在当前目录(./tempfile.txt/path/to/tempfile.txt中?

如果是前者,您可以简单地使用相对路径(或者,出于奇怪和神秘的目的,使用os.getcwd获得与当前目录等效的绝对路径,如@desintegr建议的那样)。

如果是后者,您可以像@jonathan建议的那样,准确地了解脚本是如何使用sys.argv[0]调用的,并使用os.path中的函数(当然,如果前者适用,您也可以将这些函数应用于os.getcwd返回的内容),或者使用os.path.dirname(__file__)等(如果需要,后者是必需的)当脚本作为模块导入时,后一种行为也会发生,而不仅仅是当它作为主脚本运行时)。


您可以使用os.getcwd()方法了解当前工作目录。

Return a string representing the current working directory. Availability: Unix, Windows.

可以使用os.chdir(path)方法更改当前工作目录。

Change the current working directory to path. Availability: Unix, Windows.