python如何将一个文件夹中所有csv文件的所有第二行都输出到一个新csv文件,所有第三行都输出到另一个新csv文件,以此类推
时间: 2023-07-04 20:21:50 浏览: 89
python 对多个csv文件分别进行处理的方法
你可以使用Python的csv模块来读取和写入csv文件,以及os模块来操作文件夹中的文件。具体的步骤如下:
1. 导入csv和os模块:
```python
import csv
import os
```
2. 定义一个函数,接受一个文件夹路径作为参数:
```python
def process_csv_files(folder_path):
```
3. 获取文件夹中所有csv文件的路径:
```python
csv_files = []
for file_name in os.listdir(folder_path):
if file_name.endswith('.csv'):
csv_files.append(os.path.join(folder_path, file_name))
```
4. 定义一个函数,接受一个csv文件路径和行数作为参数,返回该文件的指定行:
```python
def get_csv_row(csv_file_path, row_num):
with open(csv_file_path, 'r') as csv_file:
csv_reader = csv.reader(csv_file)
for i, row in enumerate(csv_reader):
if i == row_num - 1:
return row
```
5. 定义一个函数,接受一个行数和文件名作为参数,将该行输出到指定文件中:
```python
def write_csv_row(row_num, file_name, row):
with open(file_name, 'a', newline='') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(row)
```
6. 循环处理每个csv文件,将指定行输出到对应的文件中:
```python
for csv_file in csv_files:
for row_num in range(1, 4): # 假设要输出前三行
row = get_csv_row(csv_file, row_num)
file_name = f'row_{row_num}.csv'
write_csv_row(row_num, file_name, row)
```
完整代码如下:
```python
import csv
import os
def process_csv_files(folder_path):
csv_files = []
for file_name in os.listdir(folder_path):
if file_name.endswith('.csv'):
csv_files.append(os.path.join(folder_path, file_name))
def get_csv_row(csv_file_path, row_num):
with open(csv_file_path, 'r') as csv_file:
csv_reader = csv.reader(csv_file)
for i, row in enumerate(csv_reader):
if i == row_num - 1:
return row
def write_csv_row(row_num, file_name, row):
with open(file_name, 'a', newline='') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(row)
for csv_file in csv_files:
for row_num in range(1, 4): # 假设要输出前三行
row = get_csv_row(csv_file, row_num)
file_name = f'row_{row_num}.csv'
write_csv_row(row_num, file_name, row)
```
你可以调用该函数并传入一个文件夹路径来处理对应的csv文件。
阅读全文