使用Python从目录中获取所有 CSV 文件
Python提供了许多内置包和模块来处理工作区中的 CSV 文件。可以在系统的目录和子目录中访问 CSV 文件并进行修改或编辑。 CSV 文件内容既可以打印在 shell 上,也可以以数据帧的形式保存,稍后播放。
在本文中,我们将看到如何遍历包含在由不同类型的文件组成的目录(文件夹/路径)中的 n 个 CSV 文件,并处理这些文件的内容。因此,我们将两种不同的方法应用于我们的任务。
两种方法的输入目录:
使用的 CSV:
CSV 1:
CSV 2:
CSV 3:
方法一:使用 Glob 模块
- 最初,源目录的路径被指定,在这种情况下,文件夹“csvfoldergfg”使用路径变量。
path = "csvfoldergfg"
- 为了定位所有名称可能未知的 CSV 文件,调用 glob 模块并调用其 glob 方法。它提供了使用 glob.glob(path) 的路径。这将返回位于路径内的所有 CSV 文件列表。使用的正则表达式等效于 *.csv,它匹配扩展名为 .csv 的所有文件。
glob.glob(path, '*.csv')
- 然后使用 for 循环对这些文件执行迭代,并使用 pandas 库的 read_csv() 方法将内容读入数据帧。然后可以操作使用此方法获取的信息。
read_csv(file_contents)
以下代码在本地机器上执行,其中脚本和指定路径的目录都存储在同一个工作目录中:
Python3
# importing the required modules
import glob
import pandas as pd
# specifying the path to csv files
path = "csvfoldergfg"
# csv files in the path
files = glob.glob(path + "/*.csv")
# defining an empty list to store
# content
data_frame = pd.DataFrame()
content = []
# checking all the csv files in the
# specified path
for filename in files:
# reading content of csv file
# content.append(filename)
df = pd.read_csv(filename, index_col=None)
content.append(df)
# converting content to data frame
data_frame = pd.concat(content)
print(data_frame)
Python3
# importing the required packaged
# in python
import pandas as pd
import os
dir_name = "csvfoldergfg"
# specifying an empty list for content
content = []
for file in os.listdir(dir_name):
# reading content into data frame
df = pd.read_csv(file)
df_list.append(df)
final_content = df.append(df for df in df_list)
print(final_content)
输出:
方法二:使用OS模块
- 最初指定源目录的路径,在这种情况下,文件夹“csvfoldergfg”使用 dir_name字符串变量。
dir_name = "csvfoldergfg"
- 为了定位所有名称可能未知的文件,调用 os 模块,并调用其 listdir() 方法。它提供了使用 os.listdir(path) 的路径。这将返回位于路径内的所有文件列表。
os.listdir(dir_name)
- 然后使用 for 循环对这些文件执行迭代,并使用 pandas 库的 read_csv() 方法将内容读入数据帧。然后可以操作使用此方法获取的信息。
read_csv(file_contents)
以下代码在本地机器上执行:
蟒蛇3
# importing the required packaged
# in python
import pandas as pd
import os
dir_name = "csvfoldergfg"
# specifying an empty list for content
content = []
for file in os.listdir(dir_name):
# reading content into data frame
df = pd.read_csv(file)
df_list.append(df)
final_content = df.append(df for df in df_list)
print(final_content)
输出: