我在目录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
。
答案 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