def export_csv(combination): print ("结果导出中 ...") try: csv_list = [["姓名","出生日期","性别","邮编","所患疾病"]] for index, group in enumerate(combination.grouped_persons): for p in combination.grouped_persons[group]: csv_entry = str(p).encode().split(', ') csv_list.append(csv_entry) with open("匿名化结果.csv", 'wb') as myfile: wr = csv.writer(myfile, delimiter=",") wr.writerows(csv_list) print("结果导出成功!") except Exception as e: print ("结果导出错误: " + str(e))导出文件时报错a bytes-like object is required, not 'str'
时间: 2024-03-01 11:52:46 浏览: 92
这个错误通常是因为 `csv_entry` 是一个字符串类型的对象,而 `writerows()` 函数需要的是一个列表类型的对象,其中每个元素也应该是一个列表。可以将 `csv_entry` 转换为列表类型的对象,例如:
```
csv_entry = str(p).split(', ')
csv_list.append(csv_entry)
```
这样就将 `csv_entry` 转换为了列表类型的对象。另外,由于 `open()` 函数的第二个参数应该是字符串类型而不是 bytes 类型,所以应该将文件打开模式从 `'wb'` 改为 `'w'`。修改后的代码如下:
```
import csv
def export_csv(combination):
print("结果导出中 ...")
try:
csv_list = [["姓名", "出生日期", "性别", "邮编", "所患疾病"]]
for index, group in enumerate(combination.grouped_persons):
for p in combination.grouped_persons[group]:
csv_entry = str(p).split(', ')
csv_list.append(csv_entry)
with open("匿名化结果.csv", 'w', newline='') as myfile:
wr = csv.writer(myfile, delimiter=",")
wr.writerows(csv_list)
print("结果导出成功!")
except Exception as e:
print("结果导出错误: " + str(e))
```
阅读全文