python批量创建csv文件并写入
时间: 2024-10-17 16:06:40 浏览: 81
在Python中,你可以使用内置模块`csv`来批量创建CSV文件并写入数据。首先,你需要导入`csv`模块,然后定义一个函数来生成文件,并使用`with open()`语句打开文件以保持资源管理。下面是一个简单的示例:
```python
import csv
def create_and_write_csv(filename, data_list):
# 定义数据列表,每个元素表示一行的数据
with open(filename, 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
# 写入数据到CSV文件
for row in data_list:
writer.writerow(row)
# 示例数据
data = [
['姓名', '年龄', '性别'],
['张三', '25', '男'],
['李四', '30', '女'],
['王五', '35', '男']
]
# 批量创建CSV文件并写入
for i in range(1, 4): # 假设你想创建3个文件
filename = f'data_file_{i}.csv'
create_and_write_csv(filename, data[i-1])
相关问题
python创建csv文件追加写入
### Python 追加写入 CSV 文件
在 Python 中,可以通过设置 `open` 函数中的参数 `mode='a'` 来实现以追加模式写入 CSV 文件。这种方式不会覆盖原有数据,而是在文件末尾新增记录。
以下是具体方法:
#### 使用内置模块 `csv`
通过指定 `mode='a'` 参数打开目标 CSV 文件,并利用 `csv.writer` 对象完成数据的追加操作[^1]。
```python
import csv
with open('./test.csv', mode='a', encoding='utf-8-sig', newline='') as csvfile:
writer = csv.writer(csvfile)
for i in range(10, 20): # 假设要追加新的行
writer.writerow(['yyy', 'yyy', i])
```
上述代码片段展示了如何向已存在的 CSV 文件中追加新行。注意编码方式为 `'utf-8-sig'` 可防止某些情况下出现 BOM 字符问题。
---
#### 使用 Pandas 库
如果需要处理更复杂的数据结构或者频繁更新大型表格,则可以借助第三方库 **Pandas** 实现相同功能[^3]。
下面是一个基于 Pandas 的例子:
```python
import pandas as pd
data_to_append = {'Column1': ['zzz'], 'Column2': ['zzz'], 'Column3': [99]}
mydf = pd.DataFrame(data_to_append)
# 将 DataFrame 数据保存至 CSV 文件并启用追加模式(mode='a')
mydf.to_csv('foo.csv', index=False, header=False, mode='a')
```
这里的关键在于设置了两个重要参数:
- `header=False`: 防止重复写入列名;
- `index=False`: 不存储索引信息;
最后通过设定 `mode='a'`, 成功实现了无损追加行为。
---
#### 处理目录下多个 CSV 文件的情况
当面对批量修改需求时(比如删除特定字段),可遍历当前工作路径下的所有 `.csv` 文件逐一执行相应逻辑[^2]:
```python
import os
import csv
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
continue
print(f'Removing or appending data into {csvFilename}...')
rows = []
with open(csvFilename, 'r') as infile:
reader = csv.reader(infile)
next(reader) # 跳过首行作为示例
for row in reader:
rows.append(row + ["new_column_value"]) # 添加额外一列
with open(csvFilename, 'w', newline='', encoding='utf-8-sig') as outfile:
writer = csv.writer(outfile)
writer.writerow(["ColA", "ColB", ..., "New Column Name"])
for r in rows:
writer.writerow(r)
```
此脚本会读取每一个符合条件的 CSV 文档,在保留原始内容的基础上增加自定义的新列或调整现有布局后再重新写出到原位置上。
---
python批量对CSV文件进行转置
在Python中,批量对CSV文件进行转置可以通过多种方式实现。以下是一个简单的示例,使用了Python内置的`csv`模块来读取CSV文件,并将数据转置后写入新的CSV文件中。
首先,你需要确定所有待转置的CSV文件具有相同数量的列,这样转置才是有意义的。下面是一个简单的脚本示例,它会读取指定目录下的所有CSV文件,并将它们转置后保存在同一目录下:
```python
import csv
import os
import shutil
# 设置工作目录,这里假设所有CSV文件都在这个目录下
work_dir = 'path/to/csv_files'
# 设置输出目录,用于存放转置后的CSV文件
output_dir = 'path/to/output_transposed_files'
# 确保输出目录存在
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 遍历工作目录中的所有文件
for filename in os.listdir(work_dir):
if filename.endswith('.csv'): # 检查文件后缀是否为.csv
input_file = os.path.join(work_dir, filename)
output_file = os.path.join(output_dir, 'transposed_' + filename)
# 读取原始CSV文件并转置数据
with open(input_file, 'r', newline='') as f:
csv_reader = csv.reader(f)
rows = list(csv_reader)
columns = list(zip(*rows))
# 将转置后的数据写入新的CSV文件
with open(output_file, 'w', newline='') as f:
csv_writer = csv.writer(f)
csv_writer.writerows(columns)
print('转置完成!')
```
这段代码假设所有CSV文件的第一行都是列标题,并且后续行都是数据。它首先创建了一个转置后的列的列表,然后将这个列表写入到新的CSV文件中。
请根据你的具体需求进行调整,例如,你可能需要忽略原始文件的第一行,或者处理不同的文件编码等。
阅读全文
相关推荐
















