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

时间:2010-02-13 23:18:25

标签: python path

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

运行时:

python script.py

它只适用于文件

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

python /path/to/script.py

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

怎么样?

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

3 个答案:

答案 0 :(得分:8)

根据伟大的Dive Into Python

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)

答案 1 :(得分:7)

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

当你运行python /path/to/script.py时,你想要你的临时文件?在当前目录(./tempfile.txt)或/path/to/tempfile.txt

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

如果是后者,您可以像@Jonathan建议的那样准确了解如何使用sys.argv[0]调用脚本,并使用os.path中的函数操作该路径(当然您也可以应用这些函数)到os.getcwd返回的内容,如果前一种情况适用),或者使用os.path.dirname(__file__)之类的东西(后者是必要的,如果您在脚本作为模块导入时也需要后一种行为,而不仅仅是它作为主要脚本运行。)

答案 2 :(得分:0)

您可以使用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.