Python如何管理相对路径

Python如何管理相对路径,python,Python,我不知道如何在Python中找到相对路径。代码只允许我使用绝对路径 我想要什么 它迫使我做什么 config = configparser.ConfigParser() config.read('C:\\Users\\***confendential***\\OneDrive\\文档\\Python\\Chinese for practice\\ChineseWords\\app\\main.ini',) print(config.sections()) FilePaths = config[

我不知道如何在Python中找到相对路径。代码只允许我使用绝对路径

我想要什么

它迫使我做什么

config = configparser.ConfigParser()
config.read('C:\\Users\\***confendential***\\OneDrive\\文档\\Python\\Chinese for practice\\ChineseWords\\app\\main.ini',)
print(config.sections())

FilePaths = config['data']
DictionaryFilePath = FilePaths['DictionaryFilePath']
print(DictionaryFilePath)
有什么想法吗


是Onedrive吗?

我想就是Onedrive。它迫使你使用一条狭隘的前进道路

已经有一些答案涵盖了这一点

总结一下,如果你这么做的话

config.read('..\\main.ini',)
然后,您的程序需要一个文件,
main.ini
位于您从何处执行程序的父目录中

通常需要指定一个相对于正在执行的文件位置的路径

您可以使用
获取该文件的路径,然后使用
os.path
模块对其进行操作(请参阅)

在本例中,假设您的
main.ini
位于正在运行的脚本的父目录中,您可以执行以下操作:

inifile = os.path.join(os.path.dirname(os.path.dirname(__file__)), "main.ini")
config.read(inifile)

在您的案例中需要注意的另一件事是,实际检查ini文件是否已加载可能很有用。如果找不到该文件,它将返回一个空对象,因此您可以对此进行检查并打印消息或错误


希望这是有帮助的。其他链接答案提供了关于这些想法的一些更有用的信息。

您从哪里调用此脚本?Python的相对路径基于调用可执行文件的位置。您正在运行什么命令来运行脚本?第一个脚本生成了什么输出?向ConfigParser对象传递无效路径将返回空对象。因此,如果未找到
main.ini
,那么调用
config['data']
应该会引发一个KeyError。@wstk您是对的,它确实会引发一个KeyError。有没有脚本可以帮助我找到相对路径?谢谢正如@C.Nivs所提到的,路径是相对于调用可执行文件的路径来解析的。因此,在您的示例中,无论从何处运行脚本,它都希望父目录中有一个文件(
main.ini
)。我将添加一个关于如何解析相对于脚本位置的路径的答案。
inifile = os.path.join(os.path.dirname(os.path.dirname(__file__)), "main.ini")
config.read(inifile)