如何用Python重写文本文件

2024-09-27 07:30:09 发布

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

如果我有这样的代码:

f = open('score.txt','r+')
playersScore = 1
oldscore = (f.read())
oldscore = int(oldscore)
score = oldscore + PlayersScore
f.write(str(score))
f.close()

文本文件中有1。如果我尝试运行代码,则会出现以下错误:

oldscore = int(oldscore)
ValueError: invalid literal for int() with base 10: ''

我该怎么解决这个问题?我是python初学者,所以请保持简单。在


Tags: 代码txtcloseread错误openwriteint
3条回答

通过定期打印,您可以看到您正在尝试执行的操作的值。在

f = open('score.txt','r+')
playersScore = 1
oldscore = (f.read())
print(oldscore) # Let's see what the value of this is!
oldscore = int(oldscore)
score = oldscore + playersScore
f.write(str(score))
f.close()

即使文件的唯一内容看起来像3,它的末尾可能有一个换行符(\n)。你可能想把它丢掉。在

字符串的.strip()方法是一个不错的选择。它将删除字符串开头或结尾处的换行符。在

这应该是一些工作代码:

^{pr2}$

Zizouz212的上述评论表明了这一点;您的分数.txt文件包含无法转换为整数的其他字符,如换行符。在score.txt中填充1时,您可能在保存之前按了enter键。在

对从该行读取的值使用.strip()可确保int()只接收来自该行的值。在

此外,代码示例在使用oldscore添加PlayersScore时将其大写。这很可能是您的帖子中的类型-o,但如果不是,这也会在运行程序时产生问题。在

我认为问题是由于增加了一条新线而不是替换了原来的线路。这应该是有效的:

f = open('score.txt','r+')
playersScore = 1
oldscore = (f.read())
oldscore = int(oldscore)
score = oldscore + playersScore
f.seek(0)
f.write(str(score))
f.close()

相关问题 更多 >

    热门问题