我的script.py在与脚本相同的目录中创建一个临时文件。
运行时:
python script.py
它只适用于文件
但是当你运行时它不起作用:
python /path/to/script.py
那是因为我在script.py中使用临时文件的相对路径而不是绝对路径。问题是我不知道它将在哪条路上运行,所以我需要一种方法来知道这一点。
怎么样?
os.path.abspath(os.path.dirname(__file__))
答案 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.