2 回答
TA贡献1866条经验 获得超5个赞
os.getcwd() 不仅仅返回当前工作目录。它在您的环境中默认为 $PWD。这不是脚本所在的位置,而是您执行脚本时所在的位置。
您可以通过相对路径解决它。__file__
提供运行的文件的路径。os.path.dirname
提供给定文件的目录。这意味着您可以获得运行 Python 文件的文件夹。因此,您可以根据 Python 文件的文件夹提供路径。
例如。:
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), "your_relative_path", "your_python_file.py"))
如果您正在运行的 Python 文件的路径是/home/user/python_script/test.py
,那么/home/user/python_script/your_relative_path/your_python_file.py
path 将被附加到您的路径中。
供参考:
如果您之前使用此行,import
您将发出警告:(模块级别导入不在文件顶部(E402))但您可以使用此注释行抑制此警告:... # noqa: E402
TA贡献1836条经验 获得超4个赞
特殊变量__file__总是包含脚本本身的完整路径。对于导入的模块也是如此。
您可以使用它来查找一些本地数据文件。但是,这确实需要更改模块文件以以不同的方式加载数据。这是一个演示它的基本示例(我假设是 Linux):
myLibrary我在其中创建了一个库目录/var/tmp和一个子目录data,供本地文件读取:
mkdir -p /var/tmp/myLibrary/data
然后,作为测试数据,我创建了一个文本文件:
echo 'Hello from test file' > /var/tmp/myLibrary/data/testfile.txt
该模块/var/tmp/myLibrary/myScript.py如下所示:
import os.path
# Prepare path to data file realative to this module.
#
libdir = os.path.dirname(__file__)
data_file_path = os.path.join(libdir, 'data/testfile.txt')
# Open the file
#
my_data_file = open(data_file_path)
# Read and show the data from the file
#
data = my_data_file.read()
print(data)
还有一个简单的脚本来导入这个模块。运行时,只需导入库模块即可打印数据文件的内容:
import sys
sys.path.append ('/var/tmp/myLibrary')
import myScript
添加回答
举报