如何通过python csv()函数读取目录中的多个csv文件?

如何通过python csv()函数读取目录中的多个csv文件?,python,csv,Python,Csv,在我的一个目录中,我有多个CSV文件。我想通过python代码读取所有CSV文件的内容并打印数据,但到目前为止我还不能这样做 所有CSV文件都具有相同的列数和相同的列名 我知道一种列出目录中所有CSV文件并通过“os”模块和“for”循环对其进行迭代的方法 现在使用“csv”模块读取文件名 reader = csv.reader(files) 在此之前,我希望输出是CSV文件的名称。这恰好是分类的。例如,名称为1.csv、2.csv等等。但输出如下所示 <_csv.reader obje

在我的一个目录中,我有多个CSV文件。我想通过python代码读取所有CSV文件的内容并打印数据,但到目前为止我还不能这样做

所有CSV文件都具有相同的列数和相同的列名

我知道一种列出目录中所有CSV文件并通过“os”模块和“for”循环对其进行迭代的方法

现在使用“csv”模块读取文件名

reader = csv.reader(files)
在此之前,我希望输出是CSV文件的名称。这恰好是分类的。例如,名称为1.csv、2.csv等等。但输出如下所示

<_csv.reader object at 0x0000019F97E0E730>
<_csv.reader object at 0x0000019F97E0E528>
<_csv.reader object at 0x0000019F97E0E730>
<_csv.reader object at 0x0000019F97E0E528>
<_csv.reader object at 0x0000019F97E0E730>
<_csv.reader object at 0x0000019F97E0E528>
这恰好是我的CSV文件名的首字母缩写。部分正确,但不完全正确

除此之外,一旦我对文件进行了迭代,如何在屏幕上查看CSV文件的内容?今天我有6个文件。后来,我可能有100个文件。因此,在我的场景中不可能使用文件处理方法


有什么建议吗?

我建议您使用熊猫图书馆阅读您的CSV。 请在此处检查此答案:


虽然您一般要求使用python,但pandas在数据I/O方面做得很好,在我看来这将对您有所帮助。

我建议您使用pandas库阅读您的CSV。 请在此处检查此答案:

虽然您一般要求使用python,但pandas在数据I/O方面做得很好,在我看来,这将对您有所帮助

在此之前,我希望输出是CSV文件的名称

这就是问题所在<代码>csv。reader对象不表示文件名。它们表示惰性对象,可以通过迭代从CSV文件生成行。或者,如果要打印整个CSV文件,可以调用
CSV.reader
对象上的
list

for files in os.listdir("C:\\Users\\AmiteshSahay\\Desktop\\test_csv"):
    reader = csv.reader(files)
    print(list(reader))
如果我在csv.reader()之后添加next()函数,我会得到下面的输出

['1']
['2']
['3']
['4']
['5']
['6']
是的,这是你应该期待的。在迭代器上调用
next
,将得到该迭代器的下一个值。这将是每个文件的第一行。例如:

from io import StringIO
import csv

some_file = StringIO("""1
2
3""")

with some_file as fin:
    reader = csv.reader(fin)
    print(next(reader))

['1']
这恰好是分类的。例如,名称为1.csv、2.csv等等

这是文件名和相应文件内容之间的巧合或关联。调用
next(reader)
不会输出文件名的一部分

除此之外,一旦我迭代了文件,如何查看 屏幕上csv文件的内容

使用
print
命令,如上述示例所示

今天我有6个文件。后来,我可能有100个文件。所以,它不是 可以在我的场景中使用文件处理方法

事实并非如此。您可以定义一个函数来打印全部或部分csv文件。然后在
for
循环中调用该函数,并将文件名作为输入

在此之前,我希望输出是CSV文件的名称

这就是问题所在<代码>csv。reader对象不表示文件名。它们表示惰性对象,可以通过迭代从CSV文件生成行。或者,如果要打印整个CSV文件,可以调用
CSV.reader
对象上的
list

for files in os.listdir("C:\\Users\\AmiteshSahay\\Desktop\\test_csv"):
    reader = csv.reader(files)
    print(list(reader))
如果我在csv.reader()之后添加next()函数,我会得到下面的输出

['1']
['2']
['3']
['4']
['5']
['6']
是的,这是你应该期待的。在迭代器上调用
next
,将得到该迭代器的下一个值。这将是每个文件的第一行。例如:

from io import StringIO
import csv

some_file = StringIO("""1
2
3""")

with some_file as fin:
    reader = csv.reader(fin)
    print(next(reader))

['1']
这恰好是分类的。例如,名称为1.csv、2.csv等等

这是文件名和相应文件内容之间的巧合或关联。调用
next(reader)
不会输出文件名的一部分

除此之外,一旦我迭代了文件,如何查看 屏幕上csv文件的内容

使用
print
命令,如上述示例所示

今天我有6个文件。后来,我可能有100个文件。所以,它不是 可以在我的场景中使用文件处理方法


事实并非如此。您可以定义一个函数来打印全部或部分csv文件。然后在
for
循环中调用该函数,并将文件名作为输入。

在开发项目期间,我发现最简单的方法是使用dataframe、read\u csv和glob

import glob
import os
import pandas as pd

folder_name = 'train_dataset'
file_type = 'csv'
seperator =','
dataframe = pd.concat([pd.read_csv(f, sep=seperator) for f in glob.glob(folder_name + "/*."+file_type)],ignore_index=True)
在这里,所有csv文件都加载到一个大数据帧中


在开发项目期间,我发现最简单的方法是使用dataframe、read_csv和glob

import glob
import os
import pandas as pd

folder_name = 'train_dataset'
file_type = 'csv'
seperator =','
dataframe = pd.concat([pd.read_csv(f, sep=seperator) for f in glob.glob(folder_name + "/*."+file_type)],ignore_index=True)
在这里,所有csv文件都加载到一个大数据帧中


在您链接中的示例中,有“list_u=[]”,什么是“list_389;”。请分享一些网页链接,以便进一步研究这一部分。web链接中的示例可以按需要工作。@skill\u seeker
list\uu
是一个临时变量,它在自己的数据帧中保存每个读取CSV的列表。如果您想将它们连接起来,您可以执行
pd.concat(list_)
,但是如果您只对单个数据帧感兴趣,您可以查看它们分别执行
list_[0]
,例如,在链接中的示例中有“list_=[]”,那么“list_”是什么意思。请分享一些网页链接,以便进一步研究这一部分。web链接中的示例可以按需要工作。@skill\u seeker
list\uu
是一个临时变量,它在自己的数据帧中保存每个读取CSV的列表。如果您想将它们连接起来,您可以执行
pd.concat(list\u0)
,但是如果您只对单个数据帧感兴趣,您可以查看它们各自执行
list\u0]