"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/"'
从配置文件中的路径值中删除周围的引号,或在使用前删除它们。我更喜欢前者,因为它需要更少的纠正代码。
我有一个 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/"'
从配置文件中的路径值中删除周围的引号,或在使用前删除它们。我更喜欢前者,因为它需要更少的纠正代码。