Python错误:Python ValueError:关闭文件

时间:2017-04-10 06:09:50

标签: python file-io

Python错误:Python ValueError:关闭文件的I / O操作

我正在尝试代码

import random

with open("GoneGirlSW.txt", "r") as f,open('trainData.txt','w') as   trainFile,open('testData.txt','w') as testFile:
    data = f.read().split('\n')
    random.shuffle(data)
    train_data = data[:50]
    test_data = data[50:]

    trainFile.write(str(train_data))
    testFile.write(str(test_data))

但是它给出了错误

Traceback (most recent call last):
  File "trainTest.py", line 9, in <module>
    trainFile.write(str(train_data))
ValueError: I/O operation on closed file.

3 个答案:

答案 0 :(得分:1)

很难知道,因为您的代码没有正确缩进。我假设这是因为你还不熟悉问题编辑。

while (!$result->EOF) { $offerId=$result->fields[0]; $affId=$result->fields[1]; $status=$result->fields[2]; $deduction=$result->fields[3]; //Rest of your code.... $result->MoveNext(); // Moves to the next row } 语句的目的是让您在已知的上下文中执行代码。在打开文件的情况下,它保证在缩进套件的末尾关闭文件。所以我猜你没有缩进最后两个语句,所以它们是with所涵盖的代码的一部分。

答案 1 :(得分:0)

当with / as语句完成时,文件会自动关闭。在您的情况下,由于缺少缩进,with / as语句已完成立即。代码应为: 随机导入

with open("GoneGirlSW.txt", "r") as f,open('trainData.txt','w') as trainFile,open('testData.txt','w') as testFile:
  data = f.read().split('\n')
  random.shuffle(data)
  train_data = data[:50]
  test_data = data[50:]

  trainFile.write(str(train_data))
  testFile.write(str(test_data))

答案 2 :(得分:0)

with语句后的代码行应缩进