我的script.py使用相对路径创建了一个临时文件。
当以以下方式运行它:
python script.py
它按预期工作。
但是当您像这样运行时,它不起作用:
python /path/to/script.py
问题在于我不知道它将在哪个路径下运行。如何获取脚本文件夹的绝对路径("/path/to")以便可以在与脚本相同的目录中创建临时文件?
以下方法可行吗?
os.path.abspath(os.path.dirname(__file__))
我的script.py使用相对路径创建了一个临时文件。
当以以下方式运行它:
python script.py
它按预期工作。
但是当您像这样运行时,它不起作用:
python /path/to/script.py
问题在于我不知道它将在哪个路径下运行。如何获取脚本文件夹的绝对路径("/path/to")以便可以在与脚本相同的目录中创建临时文件?
以下方法可行吗?
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)
__file__
不是您要查找的内容:__file__
是当前正在执行的文件(脚本或模块)的路径。如果从脚本中访问它,则这恰好与脚本相同,但这只是偶然的。 - gregoltsov__file__
无法正常工作。 - tiberhockeyos.path.dirname(__file__)
,那么这可能是最好的选择,而你选择的答案则是次优的(因为它需要导入一个额外的sys
模块,而使用__file__
可以避免这个问题)。 - Alex Martelli你可以使用 os.getcwd() 方法来获取当前工作目录。
返回表示当前工作目录的字符串。
可用性:Unix,Windows。
你可以使用 os.chdir(path) 方法来更改当前工作目录。
将当前工作目录更改为 path。
可用性:Unix,Windows。