【问题标题】:Python does not always read the line completelyPython 并不总是完全读取该行
【发布时间】:2019-07-24 16:40:18
【问题描述】:

我有一个格式如下的文件:

...
[1, 2, 10, 15, 22]_[18, 23]-0
[0, 2, 10, 21, 23]_[9, 10]-1
[0, 9, 13, 14, 18]_[7, 13]-1
[8, 11, 12, 13, 23]_[8, 11]-1
...

我正在使用open(file_path).readlines()阅读文件

我想用'-'分割内容。我在每一行都有一个 for 循环和拆分功能。代码如下:

file_path = os.path.join(file_directory, file_name)
file_lines = open(file_path, 'r').readlines()
for line in file_lines:
   var1 = line.split('-')[0]
   var2 = line.split('-')[1]

代码在中间中断,错误为list index out of range

当我打印该行以调试正在发生的事情时,它会正确打印行,但有错误的行除外; [8, 11, 12, 13, 23 在这个例子中。当我再次运行它时,有时它不会失败,但有时它会在另一行失败。

我也试过了:

with open(file_path, 'r') as f:
   for line in f:
      ...

但得到了相同的结果。

我想知道可能是什么问题。

【问题讨论】:

  • 你能发布完整的循环代码吗?
  • @darshvader,我做到了。
  • 请更正您的代码,.split(-) 将给出语法错误。
  • @Tomothy32,我更正了。在这里写错字了。

标签: python python-3.x readline


【解决方案1】:

可能是不关闭文件导致的内存泄漏,这就是我能想到的。试试这段代码,看看关闭文件是否有影响。

file_path = os.path.join(file_directory, file_name)
with open(file_path, 'r') as f:
    readlines = f.readlines():
for line in readlines:
    var1 = line.split('-')[0]
    var2 = line.split('-')[1]

【讨论】:

  • 我之前尝试过关闭它,但如果我没记错的话没有用。
猜你喜欢
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多