我最近将配置文件移到了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,如果这有任何意义的话。
答案 0 :(得分:0)
os.listdir
仅返回文件名,而不是完整路径。
如果您使用的是3.5,则可以使用os.scandir
返回的项目具有路径属性。如果你没那么幸运,你将不得不自己构建完整的路径。
在你的情况下会是json.load(open(os.path.join(CONFIG_PATH, config)))
。