Skip to main content
 首页 » 编程设计

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

2025年05月04日14yjmyzz

我正在尝试建立一个系统,用户可以在其中登录网络界面并跟踪已下的订单。系统将跟踪订单,从最初的确认到生产,最后在发货前停止。 (正如我妻子所解释的:“就像 Domino's Pizza 订单跟踪器,但用于名片。”)我被困在需要从不断变化的逗号分隔 .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 文件,这些文件会根据它们的订单状态来来去去(一旦发货,文件将被存档)我已经阅读了代码解析单个文件并将值导入字典,但我发现的所有内容都是针对单个文件的。我将如何着手编写这样的东西,只针对多个文件?

import csv 
 
d = {} 
 
for row in csv.reader(open('H39TZ3.txt')): 
    d['Order %s' % row[1]] = {'tag': row[1], 'prodcode': row[2], 'qty': row[3]} 

谢谢!

请您参考如下方法:

您可以使用 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 语句之前添加适当的过滤。