在python中关闭文件的I / O操作

时间:2017-02-15 17:57:30

标签: python-3.x file-io

我必须编写一个程序,提示用户输入六个测试名称及其分数,并将它们写入名为tests.txt的文本文件中。你必须使用一个循环。每个输入都应写入文件中自己的行。完成后,程序应生成确认消息。当我运行我的程序时,它可以工作,但最后我得到一个错误:

Traceback (most recent call last):
  File "C:/Users/brittmoe09/Desktop/program6_1.py", line 34, in <module>
    main()
  File "C:/Users/brittmoe09/Desktop/program6_1.py", line 18, in main
    test_scores.write(name + '\n')
ValueError: I/O operation on closed file.

我不确定我做错了什么,任何帮助都会受到赞赏。

这是我的代码:

def main():

    test_scores = open('tests.txt', 'w')
    print('Entering six tests and scores')

for count in range(6):
    name = input('Enter a test name')
    score = int(input('Enter % score on this test'))

    while name != '':
        test_scores.write(name + '\n')
        test_scores.write(str(score) + '\n')
        test_scores.close()
        print('File was created successfully')
main() 

2 个答案:

答案 0 :(得分:0)

块while:

&#13 ;
&#13;
while name != '':
  ...
&#13;
&#13;
&#13; 如果您的姓名&#34;这是一个无限循环。 !=&#39;&#39;,所以在第一个循环中文件关闭,第二个循环你得到一个错误

答案 1 :(得分:0)

这就是我的所作所为。摆脱第二次while循环,并将关闭文件移出for循环,因为你正在关闭循环中的文件,这会给你错误:(我的一些变量名与你的不同,所以注意这一点)

test_scores = open('tests.txt','w')#open txt file
print('Entering six tests and scores')


for count in range(6):#for loop to ask the user 6 times
    name = input('Enter a test name: ')
    testscore = int(input('Enter % score on this test: '))
    for count2 in range(1):
        test_scores.write(str(name) + '\n')
        test_scores.write(str(testscore) + '\n')
test_scores.close()#close the txt file
print('File was created successfully!')