循环浏览文件夹中的所有.csv文件

2024-04-26 18:58:42 发布

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

我无法将代码扩展到.csv文件夹,而不是一个文件。我编写了读取和操作单个文件的代码,该文件以以下代码开头,并将数据放入3个列表中:

with open('Filename_raw.csv', 'r') as read_obj:
    csv_reader = reader(read_obj)
    list1 = []
    list2 = []
    list3 = []
    for row in csv_reader:
        if len(row) == 3:
        list1.append(row)
        if len(row) == 16:
        list2.append(row)
        if len(row) == 21:
        list3.append(row)
    ...
    ...
    ...

由于csv的结构(一个csv中有3个不同的表),我不得不逐行浏览每个csv

我有一个文件路径C:\Users\xxxx\xxxxxx\xxxxxx\xxxxxxxx,其中有.csv,所以我希望能得到一些关于如何循环遍历文件夹中所有文件而不是一个文件的指导

文件名的结构类似,总是以“_raw.csv”结尾

任何帮助都将不胜感激-谢谢


Tags: 文件csv代码文件夹objreadrawlen
1条回答
网友
1楼 · 发布于 2024-04-26 18:58:42

下面的代码应该可以工作。我还更新了代码,因为您可以使用if - elif,而不是使用三个if条件。否则,代码将检查这三个条件,即使第一个条件满足,这是不必要的

import os

directory = os.path.join("c:\\","path")
for root,dirs,files in os.walk(directory):
    for file in files:
       if file.endswith("_raw.csv"):
          with open(file, 'r') as read_obj:
          csv_reader = reader(read_obj)
          list1 = []
          list2 = []
          list3 = []
          for row in csv_reader:
             if len(row) == 3:
                list1.append(row)
             elif len(row) == 16:
                list2.append(row)
             elif len(row) == 21:
                list3.append(row)

相关问题 更多 >