python从文件读取值并更改它并写回文件

时间:2017-04-27 10:47:36

标签: python readfile writefile

我正在从文件中读取一个值,然后再添加另一个文件然后写回同一个文件。

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))

它成功从文件中读取值,但在写入时,文件中不存储任何内容。 这有什么不对?

更新

我想替换旧值,而不是追加它。删除旧值,然后改为添加新值。

2 个答案:

答案 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

相关问题