我有一个小的文本(XML)文件,我希望加载一个Python函数。文本文件的位置始终与 Python 函数代码处于固定的相对位置。
例如,在我的本地计算机上,文件文本.xml和 mycode.py 可能驻留在:
/a/b/text.xml
/a/c/mycode.py
稍后在运行时,文件可能驻留在:
/mnt/x/b/text.xml
/mnt/x/c/mycode.py
如何确保我可以加载文件?我需要绝对路径吗?我看到我可以使用os.path.isfile,但这假定我有一条路径。
您可以按如下方式进行调用:
import os
BASE_DIR = os.path.dirname(os.path.realpath(__file__))
这将获取您从mycode.py
调用的 python 文件的目录
然后访问 XML 文件非常简单:
xml_file = "{}/../text.xml".format(BASE_DIR)
fin = open(xml_file, 'r+')
如果两个目录的父目录始终相同,这应该可以工作:
import os
path_to_script = os.path.realpath(__file__)
parent_directory = os.path.dirname(path_to_script)
for root, dirs, files in os.walk(parent_directory):
for file in files:
if file == 'text.xml':
path_to_xml = os.path.join(root, file)
特殊变量__file__
,它为您提供当前文件名(请参阅 http://docs.python.org/2/reference/datamodel.html)。
因此,在您的第一个示例中,您可以引用文本.xml mycode.py:
xml_path = os.path.join(__file__, '..', '..', 'text.xml')