【问题标题】:How to write the filename and rowcount in a csv in python?如何在python中的csv中写入文件名和行数?
【发布时间】:2019-12-10 20:00:30
【问题描述】:

我一直在尝试从另一个 CSV 的大列表中创建一个 CSV,这是交易:我想获取这些 CSV 文件的名称并将它们放入我想要创建的 CSV 中,另外,我还需要我获得名称的 CSV 文件中的行数,这是我迄今为止尝试过的:

def getRegisters(file):
    results = pd.read_csv(file, header = None, error_bad_lines= False, sep = '\t', low_memory = False)
    print(len(results))
    return len(results)
path = "C:/Users/gdldieca/Desktop/TESTSFORPANW/New folder"
dirs = os.listdir(path)
with open("C:/Users/gdldieca/Desktop/TESTSFORPANW/New folder/FilesNames.csv", 'w', newline='') as f:
    writer = csv.writer(f, delimiter = '\t')
    writer.writerow(("File", "Rows"))
    for names in dirs:
        sfile = getRegisters("C:/Users/gdldieca/Desktop/TESTSFORPANW/New folder/" + str(names))
        writer.writerow((names, sfile))

但是,即使 Pandas 实际返回文件,我似乎也无法获得文件行数。我收到此错误:

_csv.Error: iterable expected, not int

最终结果将是这样的写入 CSV

File1 90
File2 10

【问题讨论】:

  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
  • names 是一个字符串,因此您不必使用str()。您可以使用path + '/' + names 创建路径。或者更好os.path.join(path, names)

标签: python pandas csv


【解决方案1】:

如果您使用的是 pandas ,我认为您也可以使用它来制作一个包含您需要的所有值的 csv 文件。这里是一个替代方案

import os
import pandas as pd

directory='D:\\MY\\PATH\\ALLCSVFILE\\'
#create a list for add all
rows_list = []

for filename in os.listdir(directory):
    if filename.endswith(".csv"):
         file=os.path.join(directory, filename)
         df=pd.read_csv(file)
         #Count rows
         rowcount=len(df.index)
         new_row = {'namefile':filename, 'count':rowcount}
         rows_list.append(new_row)

#pass list to dataframe
df1 = pd.DataFrame(rows_list)
print(df1)
df1.to_csv('test.csv', sep=',')

结果:

【讨论】:

  • 像魅力一样工作!这实际上是我想要的。
猜你喜欢
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 2011-11-23
  • 2022-01-23
  • 1970-01-01
  • 2022-12-05
  • 2021-01-15
  • 2020-10-17
相关资源
最近更新 更多