"os" 包中的某些函数在将导入的变量作为参数时行为异常

Some functions in "os" package misbehaves when taking imported variables as arguments

我有一个 config 文件,使用 configparser 从中读取一些值,其中之一是 PROJECT_PATH
配置读取发生在单独的python文件中 导入main.py
目标列出[=15=中存在的所有目录 ]

为此,我使用了 os.listdir(),它给出了 error.

>>> os.listdir(PROJECT_PATH)
FileNotFoundError: [Errno 2] No such file or directory: '"/home/user/projects/"'

但是,如果我通过 path 硬编码,例如:os.listdir("/home/user/projects") 那么它 可以正常工作 并显示目录。

我也尝试过使用 os.path.exists() 并且出现了类似的问题:

>>> os.path.exists(PROJECT_PATH)
False
>>> os.path.exists("/home/user/projects")
True

现在,更有趣的是:
当我创建一个 局部变量 prj_path 并将路径值存储在那里时,它 有效 .

>>> prj_path = "/home/user/projects/"
>>> os.path.exists(prj_path)
True

但是,如果我将 imported 变量 PROJECT_PATH 存储到 local 变量中并使用它,它不会'不工作。
我还尝试了其他方法,例如再次进行类型转换 str(PROJECT_PATH),这也 起作用。

Basically, any operation using the imported variable PROJECT_PATH DOESN'T work, but using only local variables, and/or hardcoded strings work!


我还尝试使用 pathlib 模块从字符串生成路径:pathlib.Path(PROJECT_PATH)
这也不行。
当传递给上述任何函数时,使用导入的字符串的任何操作都不起作用。

错误信息很清楚:No such file or directory: '"/home/user/projects/"'

实际路径被额外的双引号括起来并且不存在。

Strip 可以完成这项工作:

>>> '"/home/user/projects/"'
'"/home/user/projects/"'
>>> '"/home/user/projects/"'.strip('"')
'/home/user/projects/'

看起来双引号是从配置文件加载的配置变量值的一部分。这是由错误消息提示的:

FileNotFoundError: [Errno 2] No such file or directory: '"/home/user/projects/"'

从配置文件中的路径值中删除周围的引号,或在使用前删除它们。我更喜欢前者,因为它需要更少的纠正代码。