如何知道在Python中运行脚本的路径?
我的script.py在脚本的相同目录中创建一个临时文件。
运行时:
python script.py
它只是文件
但运行时不起作用:
python /path/to/script.py
这是因为我在script.py中使用了一个相对路径来存储临时文件,而不是绝对路径。 问题是我不知道它将在哪个路径上运行,所以我需要一种方法来知道这一点。
关于什么?
os.path.abspath(os.path.dirname(__file__))
根据伟大的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)
目前的两个答案反映了你的问题含糊不清。
当你运行python /path/to/script.py
,你想要你的临时文件在哪里? 在当前目录( ./tempfile.txt
)或/path/to/tempfile.txt
?
如果是前者,则可以简单地使用相对路径(或者,对于奇怪和神秘的目的,使用os.getcwd
获取与@Desintegr建议的当前目录等效的绝对路径)。
如果是后者,您可以像@Jonathan所说的那样,通过sys.argv[0]
确切地了解脚本是如何调用的,并且可以使用os.path
的函数来操作该路径(当然,您也可以将这些函数应用于os.getcwd
如果前一种情况适用,则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.
上一篇: How to know the path of the running script in Python?
下一篇: Path to current file depends on how I execute the program