【问题标题】:List index out of range in 'file' object -- Python'文件'对象中的列表索引超出范围 - Python
【发布时间】:2024-05-18 14:30:02
【问题描述】:

我有一个文本文件reval2_log.txt,其中包含像

这样的数据
yield_curve on;DATE_val 2013 12 31;arion on;INFL_filn /srv/www/tbg/file/1/2014-07-21/Vaxtaferlar_nidur.csv;ASSETS_filn /srv/www/tbg/file/1/2014-07-21/Vordur_VT.xls;REVAL_filn kfjh.xls;CPI_value 416.7;LSK_value 8022.3;YIELDC_filn /srv/www/tbg/file/1/2014-07-21/infl.csv;CASHF_filn weouhf.xls;sjf on;user 1

然后我这样做:

f = open('reval2_log.txt', 'r')
read = f.readlines()[0].split(";")

它返回一个IndexError。 Python 当然可以找到该文件,因为它不会返回“找不到文件”错误(如果我将文件名弄乱了也会返回)。

追踪:

File "/srv/www/tbg/notendur/views.py" in reikna_reval2
  79.       reval2.main(user)
File "/srv/www/tbg/calc/reval2.py" in main
  322.  read = f.readlines()[0].split(";")

Exception Type: IndexError at /notendur/reikna/
Exception Value: list index out of range

【问题讨论】:

  • 为什么你使用.readlines() 只是为了得到第一行?为什么不改用f.readline()(单数)呢? f.readline().split(';').
  • 很好,这当然更明智。我会改变的
  • 你能显示堆栈跟踪吗?
  • @Firkamon:它现在还生成IndexError 吗?因为如果你的文件是 empty.readlines() 返回一个空列表,并且索引 0.. 处没有项目
  • 不,看来不是。尽管文件不是空的,但列表仍然是空的

标签: python list file


【解决方案1】:

Martijn 建议使用 readline() 很好。如果您的输入有时可能为空,那么您可以试试这个:

read = f.read().split(";")

【讨论】:

    最近更新 更多