当前位置:优草派 > 问答 > Python问答

python如何批量读取txt文件?

标签: Python  Python开发  Python  作者: lingandone

回答:

在实际工作中,我们经常需要读取多个txt文件中的数据,但是手动一个一个打开并复制粘贴非常麻烦,这时候就需要用到Python批量读取txt文件的技巧。本文将从多个角度分析Python如何批量读取txt文件,帮助读者更好地掌握这个技巧。

一、使用os模块遍历文件夹

Python中的os模块提供了一个函数os.walk(),可以遍历指定文件夹及所有子文件夹中的所有文件。通过这个函数,我们可以得到每个文件的绝对路径,方便后续处理。

下面是一个简单的示例代码:

```

import os

path = r'C:\Users\Username\Desktop\files' # 指定要遍历的文件夹路径

for root, dirs, files in os.walk(path):

for file in files:

if file.endswith('.txt'): # 只读取txt文件

file_path = os.path.join(root, file) # 获取文件绝对路径

with open(file_path, 'r') as f:

# 对文件进行处理

```

二、使用glob模块获取文件列表

glob模块可以根据指定的通配符匹配文件,返回符合条件的文件列表。使用这个模块可以更加方便地批量读取txt文件。

下面是一个简单的示例代码:

```

import glob

path = r'C:\Users\Username\Desktop\files\*.txt' # 指定要读取的txt文件路径

for file_path in glob.glob(path):

with open(file_path, 'r') as f:

# 对文件进行处理

```

三、使用pandas模块读取数据

pandas是Python中一个强大的数据处理库,可以方便地读取各种格式的数据文件。对于txt文件,可以使用pandas的read_csv()函数读取。

下面是一个简单的示例代码:

```

import pandas as pd

path = r'C:\Users\Username\Desktop\files' # 指定要遍历的文件夹路径

dfs = []

for root, dirs, files in os.walk(path):

for file in files:

if file.endswith('.txt'): # 只读取txt文件

file_path = os.path.join(root, file) # 获取文件绝对路径

df = pd.read_csv(file_path, sep='\t', header=None) # 读取txt文件

dfs.append(df)

result_df = pd.concat(dfs) # 将所有文件的数据合并成一个DataFrame

```

四、使用多线程加速读取

如果要读取的文件比较多或者文件比较大,使用单线程读取可能会比较慢。这时候可以使用多线程来加速读取。

下面是一个简单的示例代码:

```

import threading

import queue

path = r'C:\Users\Username\Desktop\files' # 指定要遍历的文件夹路径

file_queue = queue.Queue() # 创建一个队列,用来存储文件路径

result_list = [] # 创建一个列表,用来存储读取结果

# 将所有txt文件的路径放入队列中

for root, dirs, files in os.walk(path):

for file in files:

if file.endswith('.txt'): # 只读取txt文件

file_path = os.path.join(root, file) # 获取文件绝对路径

file_queue.put(file_path)

# 定义一个读取文件的函数

def read_file():

while not file_queue.empty():

file_path = file_queue.get() # 从队列中获取文件路径

with open(file_path, 'r') as f:

# 对文件进行处理

result_list.append(result)

# 创建多个线程并启动

threads = []

for i in range(10): # 创建10个线程

t = threading.Thread(target=read_file)

t.start()

threads.append(t)

# 等待所有线程执行完毕

for t in threads:

t.join()

# 处理所有读取结果

result = process_results(result_list)

```

五、结语

本文介绍了Python如何批量读取txt文件的几种方法,包括使用os模块遍历文件夹、使用glob模块获取文件列表、使用pandas模块读取数据和使用多线程加速读取。读者可以根据具体情况选择适合自己的方法。最后提醒读者,在读取文件时一定要注意文件编码和换行符的问题,以免出现乱码或格式错误的情况。

TOP 10
  • 周排行
  • 月排行