使用python编写的csv文件,在linux中打开时为空

时间:2018-01-11 09:45:22

标签: python python-3.x python-2.7 csv

我已将列表中的值复制到csv文件中,如

有2个名单说

list1 =['a','b','c','d','e','f','g','h','i','j','k','l','m','n']
list2 = ['1','2','3','4','5','6','7','8','9','10','11','12','13']

我正在使用以下代码将2个列表写入csv文件

import csv
from itertools import izip
with open('output1.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerows(izip(list1, list2))

当我在执行上述操作后在linux中打开output1.csv时,它是空的

但是当我打印它时,在python脚本中使用print(open(“output1.csv”)。read())打印csv文件的内容

你可以告诉我为什么当我在linux中打开它时文件是空的

1 个答案:

答案 0 :(得分:1)

下次当您遇到困难时,请更具体地说明您所期望的错误和输出,这样我们就不必浪费时间假设您的预期输出。现在解决您的问题when i open output1.csv in linux after executing the above thing , it is empty我认为您需要详细了解iterators以及file operations。所以在我的机器上运行你的脚本给了我这个很容易理解的错误。

TypeError: a bytes-like object is required, not 'str'

Python及其错误是如此可读而不是它!这个错误是正确的,因为python期望像错误一样的字节对象!将其更改为w+(并阅读有关答案中给出的链接中的权限的更多信息)。 现在这个writer.writerows(izip(list1, list2))必须清楚地理解(也在这个答案的链接中提供)。当生活给你一个迭代器时,你只需要迭代它!获取迭代迭代器的引用,你很好。请阅读更多相关信息。

import csv
from itertools import izip

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n']
list2 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13']

with open('output1.csv', 'w+') as f:
    writer = csv.writer(f)
    writer.writerows([i for i in izip(list1, list2)]) # your homework to figure out what this means and does.

让我知道这个答案是否适合你,接受它!

干杯!