获取cd之后运行的文件路径到python中的另一个目录

时间:2014-06-20 09:10:44

标签: python shell

我在目录test.py中有以下简单脚本/Users/apps: -

import os
os.chdir("/Users/apps/update/diiferent_path")
path = os.path.dirname(os.path.abspath(__file__))
print(path)

我的路径值为/Users/apps/update/diiferent_path,因为我更改了目录。如何在更改目录后获得test.py路径,即/Users/apps

2 个答案:

答案 0 :(得分:0)

chdir之后不可能这样做(当然,除非__file__已经包含绝对路径),因为信息丢失了。当进程开始自动存储在任何地方时,没有当前目录的内容。但您可以在调用os.path.abspath(__file__)之前调用chdir手动存储它。

答案 1 :(得分:0)

我同意pts post存储路径是可行的方法。尽管在整个脚本中进行了哪些修改,但最好显示您获得原始路径的意图。

供参考,两个解决方法。路径更改,因为脚本按名称执行。然后解释器在当前目录中找到该文件。当前目录会更改,因此会更改__file__sys.argv的绝对路径。

另一种方法是使用绝对路径调用脚本。另一个是要意识到脚本的路径自动添加到PYTHONPATH ,即sys.path。以下脚本说明了:

#!/usr/bin/python

import os
import sys

os.chdir("/usr/bin")
print(os.path.abspath(__file__))
print(os.path.abspath(sys.argv[0]))
print(sys.path[0])

输出:

# /tmp$ ./so24323731.py 
/usr/bin/so24323731.py
/usr/bin/so24323731.py
/tmp
# /tmp$ /tmp/so24323731.py 
/tmp/so24323731.py
/tmp/so24323731.py
/tmp