将文本文件转换为python字典

时间:2015-05-21 18:08:59

标签: python dictionary

我在将文本文件转换为python字典时遇到问题。幸运的是,文本文件有一个":"将我未来的密钥与其值分开。例如,每一行的结构都是这样的" -Project Manager:John Caldwell"。我想循环一个包含大量文本文件的目录。在这个过程中,我想要去掉一个' - '每一行都有。这是我到目前为止的代码:

import sys, traceback,os, csv, itertools
from collections import defaultdict

def get_metadata(filepath):
    d = defaultdict(list)
    for files in filepath:
        if files.endswith(".txt"):
            with open(files,'r') as in_file:
                for line in in_file:
                    k,v = line.strip('-').split(':')
                    d[k].append(v)

    return d

root_directory = get_metadata("C:\Random")
print root_directory

这是我运行脚本时得到的结果

defaultdict(<type 'list'>, {})

1 个答案:

答案 0 :(得分:3)

问题是"C:\Random"不是文件列表,它只是一个字符串。因此,for files in filepath为您提供'C',然后为':',然后为'\',依此类推。这些都不以.txt结尾,因此您不会打开任何文件或执行任何其他操作。

你想要的可能是for files in os.listdir(filepath):

或者,如果要打开该目录或任何子目录中的所有文件(递归),请使用walk(请参阅链接的文档以获取示例代码)。

正如bgporter指出的那样,如果您调用listdir的唯一原因是然后根据模式检查每个文件名,您可能希望使用for files in glob.glob(os.path.join(filepath, '*.txt')):来跳过{{1}的需要测试。