无法让python写入文本文件,给了我一个空fi

2024-03-29 08:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让我的程序写一个列表到一个文本文件。我把它改成了一个字符串,它创建了文本文件,但它是空的。我还得到它来打印变量,我试图写到文本文件,它出来完全一样,它应该。你知道吗

import string
import re
wholeLine = ""
file = open("bowlingscores.txt", "r")
for line in file:
    line = line.strip()
    wholeLine += line
    scores = re.findall('\d+', wholeLine)
    names = re.findall('\D+', wholeLine)
file.close()
scores = list(map(int,scores))
validScores = [x for x in scores if 300 >= x >= 0]
average = sum(validScores) / len(validScores)
numScores = len(scores)
output = []
for i in range(numScores):
    if scores[i] == 300:
        output.append(names[i])
        output.append("\nperfect")
    if scores[i] == average:
        output.append(names[i])
        output.append("\naverage")
    if scores[i] < average:
        output.append(names[i])
        output.append("\nbelow average")
    if scores[i] > average:
        if scores[i] <300:
            output.append(names[i])
            output.append("\nabove average")
    if scores[i] > 300:
        output.append(names[i])
        output.append("\ninvalid score")
outputFile = open('bowlingaverages.txt', 'w')
outputFile.write(str(output))
outputFile.close
print(output)

Tags: inreforoutputifnameslinefile
3条回答

下面是如何使用输出(列表)写入文件:

with open('bowlingaverages.txt', 'w') as f:
    f.write(''.join(output))
print(output)

你应该正确地将你的输出列表转换成字符串,尝试使用

outputFile = open('bowlingaverages.txt', 'w')
outputFile.write(''.join(output))
outputFile.close()

更新: 我编辑了如下代码,并让一个朋友在他的电脑上运行它,它做了它应该做的,但仍然不能在我的电脑上工作。我现在比当初更困惑了。可能是另一个程序有问题吗?你知道吗

import string
import re
wholeLine = ""
file = open("bowlingscores.txt", "r")
for line in file:
    line = line.strip()
    wholeLine += line
    scores = re.findall('\d+', wholeLine)
    names = re.findall('\D+', wholeLine)
file.close()
scores = list(map(int,scores))
validScores = [x for x in scores if 300 >= x >= 0]
average = sum(validScores) / len(validScores)
numScores = len(scores)
output = []
for i in range(numScores):
    if scores[i] == 300:
        output.append(names[i])
        output.append("\tperfect\n")
    if scores[i] == average:
        output.append(names[i])
        output.append("\taverage\n")
    if scores[i] < average:
        output.append(names[i])
        output.append("\tbelow average\n")
    if scores[i] > average:
        if scores[i] <300:
            output.append(names[i])
            output.append("\tabove average\n")
    if scores[i] > 300:
        output.append(names[i])
        output.append("\tinvalid score\n")
outputFile = open('bowlingaverages.txt', 'w')
for item in output:
    outputFile.write(item)
outputFile.close
print(output)

相关问题 更多 >