0

我正在尝试制作一个程序,将 1 添加到它从文件接收的数字,然后将这个新整数写入同一个文件以替换原始值。到目前为止我有这个:

import linecache
averagetracker = open("trackerofquiz.txt", "a")
averagenumber = linecache.getline("trackerofquiz.txt", 1).rstrip("\n")
print(repr(averagenumber))# to check if it has any strings 
averagenumber = int(averagenumber)#these 4 lines get the number from the quiztracker for the
averagenumber = averagenumber + 1 #average, turns it into an int, adds 1 then turns it back to
averagenumber = str(averagenumber)#an str, not sure if you need to turn it back into an str 
print(repr(averagenumber))# to check if it has any strings 
averagetracker.write(averagenumber)
averagetracker.close()
print("success")

每当我这样做时,它都可以工作,但它不会删除原始值,所以如果我从“0”开始并运行它,它将作为“01”写入文件。重新运行它,然后使用“01”并在其末尾添加 2,给出“012”,依此类推,具有相同的逻辑。我怎样才能使它删除它从文件中接收到的值,这样值就不会'干预?谢谢。

4

2 回答 2

1

更改averagetracker = open("trackerofquiz.txt", "a")averagetracker = open("trackerofquiz.txt", "r")。然后,就在该averagetracker.write(averagenumber)行之前,写averagetracker.close()and averagetracker = open("trackerofquiz.txt", "w")

它应该如下所示:

import linecache
averagetracker = open("trackerofquiz.txt", "r")
averagenumber = linecache.getline("trackerofquiz.txt", 1).rstrip("\n")
print(repr(averagenumber))# to check if it has any strings 
averagenumber = int(averagenumber)#these 4 lines get the number from the 
quiztracker for the
averagenumber = averagenumber + 1 #average, turns it into an int, adds 1 then turns it back to
averagenumber = str(averagenumber)#an str, not sure if you need to turn it back into an str 
print(repr(averagenumber))# to check if it has any strings 
averagetracker.close()
averagetracker = open("trackerofquiz.txt", "w")
averagetracker.write(averagenumber)
averagetracker.close()
print("success")

这是因为“a”表示“追加”(写入文件末尾),而“w”表示“写入”(替换文件内容)。但是,您不能以“w”开头,因为这会立即删除文件的内容(从程序的角度来看),因此您需要以“r”(读取)开头,然后再用“w”打开它。

我希望这有帮助!

于 2017-11-29T19:00:42.603 回答
0

在您open("trackerofquiz.txt", "a")的文件中,您已表示要附加到文件(“a”)。要覆盖文件,将“a”更改为“w”,您应该是金色的。

于 2017-11-29T18:57:56.937 回答