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

2024-10-03 19:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我得到的路径值为/Users/apps/update/diiferent_path,因为我已经更改了目录。我怎样才能得到测试.py路径,即更改目录后的/Users/apps。你知道吗


Tags: appspathpytestimport路径目录脚本
2条回答

chdir之后不可能这样做(当然,除非__file__已经包含绝对路径),因为信息丢失了。当进程启动时,没有什么是当前目录这样的东西自动存储在任何地方。但是您可以在调用chdir之前通过调用os.path.abspath(__file__)手动存储它。你知道吗

我同意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

相关问题 更多 >