擅长:python、mysql、java
<p>我同意<a href="https://stackoverflow.com/a/24323988/3146034">pts post</a>存储路径是一种方法。它最好地显示了您获取原始路径的意图,尽管在整个脚本中进行了哪些修改。你知道吗</p>
<p>为了便于参考,有两种解决方法。由于脚本是按名称执行的,因此路径会更改。然后解释器在当前目录中找到文件。当前目录发生更改,因此<code>__file__</code>和<code>sys.argv</code>的绝对路径也随之更改。你知道吗</p>
<p>一种解决方法是使用<strong>绝对路径调用脚本。另一个是实现脚本的路径<strong>自动添加到PYTHONPATH</strong>,即添加到<code>sys.path</code>。以下脚本说明:</p>
<pre><code>#!/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])
</code></pre>
<p>输出:</p>
<pre><code># /tmp$ ./so24323731.py
/usr/bin/so24323731.py
/usr/bin/so24323731.py
/tmp
# /tmp$ /tmp/so24323731.py
/tmp/so24323731.py
/tmp/so24323731.py
/tmp
</code></pre>