如何通过python csv()函数读取目录中的多个csv文件?
在我的一个目录中,我有多个CSV文件。我想通过python代码读取所有CSV文件的内容并打印数据,但到目前为止我还不能这样做 所有CSV文件都具有相同的列数和相同的列名 我知道一种列出目录中所有CSV文件并通过“os”模块和“for”循环对其进行迭代的方法 现在使用“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
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 seekerlist\uu
是一个临时变量,它在自己的数据帧中保存每个读取CSV的列表。如果您想将它们连接起来,您可以执行pd.concat(list\u0)
,但是如果您只对单个数据帧感兴趣,您可以查看它们各自执行list\u0]