Python:找不到os.listdir文件

时间:2016-09-06 13:55:17

标签: python json file

我最近将配置文件移到了Project中的另一个文件夹中。我尝试加载这样的:

CONFIG_PATH = os.path.abspath(os.path.dirname(os.path.abspath(__file__))+"/../config/")    

def load_config():
    configs = {}
    for config in os.listdir(CONFIG_PATH):
        configs[str(config)[0:-12]] = json.load(open(config))
    return configs

我正在运行

中的代码
D:/.../MyProject/src

指定的CONFIGPATH已正确设置为

D:/.../MyProject/config

现在在迭代循环中,open(config)引发了一个异常:

FileNotFoundError: [Errno 2] No such file or directory: 'sample.config.json'

我无法理解为什么我的程序无法打开文件,因为os.listdir给出了该文件,因此该文件必须存在。实际上,循环中的print(config)确认存在具有该名称的文件。那么为什么它不会打开而是引发FileNotFoundError?

我是否想念这里显而易见的?在我向上移动文件之前,代码工作正常。我在Windows 7上使用Pycharm,如果这有任何意义的话。

1 个答案:

答案 0 :(得分:0)

os.listdir仅返回文件名,而不是完整路径。

如果您使用的是3.5,则可以使用os.scandir返回的项目具有路径属性。如果你没那么幸运,你将不得不自己构建完整的路径。

在你的情况下会是json.load(open(os.path.join(CONFIG_PATH, config)))