【问题标题】:load csv file into list将 csv 文件加载到列表中
【发布时间】:2016-06-04 03:21:18
【问题描述】:

我有一个 python 脚本,它首先将 list 写入 CSV 文件,然后立即将 CSV 文件加载到另一个 list

我只单独尝试了将list写入CSV的代码,它可以工作,CSV文件内容是制表符分隔的,其内容如下:

car house wife

但是当放在一起时:

import csv

// write list to CSV file, it works!
the_list=["car","house","wife"]
the_file = open("my_file.csv", 'w+')
writer = csv.writer(the_file, delimiter='\t')
writer.writerow(the_list)


// read CSV file & load into list
my_file = open("my_file.csv", 'r')
reader = csv.reader(my_file, delimiter='\t')
my_list = list(reader)
print(my_list)

我打印出一个空列表:[],怎么了?

【问题讨论】:

  • 您向我们展示的代码没有任何问题。您确定这是您正在运行的代码的全部内容吗?
  • 您是否尝试过提供open 的绝对路径?
  • 好的,我现在把完整的代码放在这里。请看一看。

标签: python python-2.7 csv


【解决方案1】:

您没有关闭正在写入的文件,因此读取时找不到要读取的数据。您可以使用with 语句来确保文件已关闭。

import csv

# write list to CSV file, it works!
the_list=["car","house","wife"]
with open("my_file.csv", 'w') as outfile:
    writer = csv.writer(outfile, delimiter='\t')
    writer.writerow(the_list)


# read CSV file & load into list
with open("my_file.csv", 'r') as my_file:
    reader = csv.reader(my_file, delimiter='\t')
    my_list = list(reader)
    print(my_list)

如果你这样做,阅读效果很好。

➜  python test.py
[['car', 'house', 'wife']]

【讨论】:

  • 他还可以在每个处理步骤之后抛出 the_file.close() 和 my_file.close()。
  • 是的,我认为无论如何使用with 是一个很好的模式:)
  • 我同意,只是说如果他不知道 with 做了什么,他可以用这种方式解决它
  • 对了,如何去掉方括号[[... ]]?现在,如果我做my_list.append("something"),我最终会得到[['car', 'house', 'wife']] 'something',我的意思是元素被附加到外部]
  • 阅读器返回一个迭代器,它每行返回一个列表。因此,如果您实际上只想追加到第一行,只需执行 my_list[0].append("something")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
相关资源
最近更新 更多