试图缩短打开多个文本文件的方法

问题描述 投票:0回答:1

我正在尝试更好,更清洁,更短的方式来打开多个JSON编码的文本文件。当所有这些文件都存在时,很容易将它放在一个try代码中。

但是当文件不存在时,其余文件将不会被打开。此外,每个文本文件都包含一个字典,需要通过json.load导入到一个唯一的字典中。

我现在的代码如下:

dict1 = {}
while True:
    try:
        dict1 = json.load(open("temp/dict 1.txt"))
        break
    except (FileNotFoundError, IOError):
        break
    else:
        break

dict2 = {}
while True:
    try:
        dict2 = json.load(open("temp/dict 2.txt"))
        break
    except (FileNotFoundError, IOError):
        break
    else:
        break

dict3 = {}
while True:
    try:
        dict3 = json.load(open("temp/dict 3.txt"))
        break
    except (FileNotFoundError, IOError):
        break
    else:
        break

这个问题也与另一个问题挂钩,在另一个话题中提到:Searching for a more elegant (less code) way to compare multiple dicts

对于我所面临的这些问题,也许还有另一种解决方案。

python json
1个回答
0
投票

问题是你正在使用休息,这将在第一次失败时停止。您应该做的是忽略错误并在文件不存在时转到下一个文件。我还建议您将字典存储在由文件名引用的数组或字典中,而不是单独的值。所以你的代码看起来像这样:

filenames = ['path1', 'path2']
loaded = {} 
for fp in filenames:
    try:
        with open(fp, 'r') as pointer:
            loaded[fp] = json.load(pointer)
    except (FileNotFoundError, IOError):
        continue
© www.soinside.com 2019 - 2024. All rights reserved.