在Python中解析多个CSV(.txt)文件

2024-05-29 05:57:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个系统,用户可以登录到网络界面,并跟踪已下的订单。系统将跟踪订单,从最初的确认,到生产,最后在发货前停止。(正如我妻子解释的那样:“就像Domino的披萨订单跟踪器,但是对于名片。”)我陷入了一个需要从不断变化的逗号分隔的.txt文件目录中解析数据的地方。每个订单自动生成它自己的.txt文件,其中包含我将在web界面上显示的各种重要信息。例如:

H39TZ3.txt:

token,tag,prodcode,qty          #(These are the headers)
,H39TZ3,pchd_4stpff,,100        #(These are the corresponding values for part 1 of the order)
,H39TZ3,pchdn_8ststts,6420-PCNM8ST,100   #(These are values for part 2 of the order)

在任何给定的时间,目录中都会有超过300个不同的.txt文件,这些文件会根据它们的订单状态来来去去(一旦发货,这些文件就会被归档)我已经阅读了一些代码来解析一个单独的文件,并将这些值导入到字典中,但是我找到的所有东西都是针对单个文件的。我该怎么写这样的东西,只写多个文件?在

^{pr2}$

谢谢!在


Tags: 文件ofthe订单txtfor界面系统
2条回答

我想补充一下,如果您想将行作为字典来阅读,csv.DictReader可能是一个更好的选择。它将根据第一行(标题)自动设置字典的键。你应该这样使用它:

with open(filename) as csv_file:
    for row in csv.DictReader(csv_file):
        d['Order ' + row['tag']] = row

不过,正如dm03514所提到的,数据库可能是一个更好的选择。sqlite附带Python(即sqlite3模块),您可以使用各种工具来检查和修改数据库。它还应该比使用单个文件更健壮。在

您可以使用os.listdir()列出包含.txt文件的目录的内容。下面的内容应该对您有用:

for filename in os.listdir("."):
    with open(filename) as csv_file:
        for row in csv.reader(csv_file):
            d['Order %s' % row[1]] = {'tag': row[1], 'prodcode': row[2], 'qty': row[3]}

注意,我在其中添加了一个with语句。它将确保在您完成处理后关闭文件,这样您就不会浪费/用完文件描述符。如果目录中可能包含除您感兴趣的文件之外的其他文件,您可以在with语句之前添加适当的筛选。在

相关问题 更多 >

    热门问题