Python 如何创建一个以文件名为键,以行(文件中)的第一个字符为值的字典?

Python 如何创建一个以文件名为键,以行(文件中)的第一个字符为值的字典?,python,file,dictionary,Python,File,Dictionary,所以我有一些包含数据/行的txt文件。例如,文件Q127.txt将包含: 0 45 67 78 91 0 56 78 89 01 5 56 43 56 67 我只想读取文件中每行的第一个字符。我通过以下方式实现了这一目标: file = open("Q127.txt","r") for line in file.readlines(): print(line[0]) # just printing

所以我有一些包含数据/行的txt文件。例如,文件Q127.txt将包含:

    0 45 67 78 91
    0 56 78 89 01
    5 56 43 56 67
我只想读取文件中每行的第一个字符。我通过以下方式实现了这一目标:

    file = open("Q127.txt","r")
    for line in file.readlines():
        print(line[0]) # just printing to show what i get

    output: 0
            0
            5
现在,由于我有许多这样的.txt文件,我想从一个文件夹中读取它们,并将文件名(作为键)和行[0]值(作为值)存储在一个名为classes的字典中。所以课程应该是这样的

     classes={"Q127.txt": [0,0,5], "Q128.txt": [5,8,0,1,1,1,1],..........}
我如何做到这一点? 编辑:这是我尝试过的,但我仍然没有得到想要的输出

    import os
    file = open("Q127.txt","r")
    classes={}
    l=[]
    for line in file.readlines():
        l.append(line[0])
        classes[file]=[l]
    classes # to see the output

    output:
    {<_io.TextIOWrapper 
    name='Q127.txt' mode='r' 
    encoding='cp1252'>: [['0','0']]}
导入操作系统
文件=打开(“Q127.txt”,“r”)
类={}
l=[]
对于文件.readlines()中的行:
l、 追加(第[0]行)
类[文件]=[l]
类#以查看输出
输出:
{: [['0','0']]}

维护此词典有两种方法

  • 如果您想一次又一次地为每个文件运行此脚本,则需要创建dict并将其保存到数据库中。下次读取另一个文件时,需要首先从DB中获取dict,更新它并将其保存回去。 或

  • 您必须将其作为一个脚本运行(在一个脚本中读取所有文件),在开始处创建一个空dict,并在for循环中,将值作为列表传递。i、 e

    classess_dict={}

    //在for循环中:

    类目录[文件名]=[值]


  • 您可以将文件存储在变量中

    file_list= ['test.txt'] # you can use the os.listdir() to obtain the list 
                               of  files and location
    classes= {}
    for i in file_list:
        content= open(i).readline()# reads only first line
        classes[i]= content.split(' ')[0]
    
    
    
    

    第一个字符总是数字吗?然后,您可以使用
    int(第[0]行]
    将第一个字符计算为数字,还可以访问
    文件。name
    成员作为该行的字典键:

        import os
        file = open("Q127.txt","r")
        classes={}
        l=[]
        for line in file.readlines():
            l.append(int(line[0]))
        # move the classes dictionary assignment out of the for loop, l already a list, no need to put brackets around it
        classes[file.name]=l
        classes # to see the output
    

    您尝试实现上述行为的目的是什么?在实现您尝试的解决方案时您遇到了什么问题?您好,我已经编辑了我尝试的问题。请将类[file]=[l]移动到for循环之外。因此,您不能将文件用作键,它具有fileobject,而不仅仅是文件名。将其用作classess_dict[file.name]=值您要将文件名(即字符串)设置为字典键。但是在
    classes[file]=[l]
    行中,您将相应的文件对象设置为键。将其更改为
    classes[file.name]=[l]
    ,并将这一行移到循环外部,因为它在循环内部很简单。我只想读取文件中所有行的第一个字符。不仅仅是第一行,我尝试了这一点,但我得到的输出与我在问题检查中对您的问题的评论相同,您使用的是文件对象作为键。你需要改变这个。