我正在从文件中读取一个值,然后再添加另一个文件然后写回同一个文件。
total = 0
initial = 10
with open('file.txt', 'rb') as inp, open('file.txt', 'wb') as outp:
content = inp.read()
try:
total = int(content) + int(initial)
outp.write(str(total))
except ValueError:
print('{} is not a number!'.format(content))
它成功从文件中读取值,但在写入时,文件中不存储任何内容。 这有什么不对?
我想替换旧值,而不是追加它。删除旧值,然后改为添加新值。
答案 0 :(得分:2)
我不知道您使用的是哪个Python版本,但2.7.13和3.6.1版本都给出了以下错误:b'' is not a number!
。因此,由于引发了错误,因此不会解释写入指令。
从左到右评估with
语句。首先,您的文件在读取模式下打开。在此之后,它在写入模式下打开并导致文件被截断:没有什么可读的了。
您应该分两步进行:
total = 0
initial = 10
# First, read the file and try to convert its content to an integer
with open('file.txt', 'r') as inp:
content = inp.read()
try:
total = int(content) + int(initial)
except ValueError:
print('Cannot convert {} to an int'.format(content))
with open('file.txt', 'w') as outp:
outp.write(str(total))
答案 1 :(得分:1)
您无法同时打开文件两次, 您的代码应如下所示:
total = 0
initial = 10
with open('file.txt', 'rb') as inp:
content = inp.read()
total = int(content) + int(initial)
with open('file.txt', 'wb') as outp:
outp.write(str(total))
看一下这可以帮到你: Beginner Python: Reading and writing to the same file