Python 如何从文本文件中获取一个数字并用该数字替换它+;1.

Python 如何从文本文件中获取一个数字并用该数字替换它+;1.,python,Python,我想取一个数字,在我的例子中是0,然后添加1,然后将其替换回文件中。这就是我到目前为止所做的: def caseNumber(): caseNumber = open('caseNumber.txt', "r") lastCase = caseNumber.read().splitlines()[0] Case = [] Case.append(lastCase) newCase = [ int(x)+1 for x in Case ] with

我想取一个数字,在我的例子中是0,然后添加1,然后将其替换回文件中。这就是我到目前为止所做的:

def caseNumber():
    caseNumber = open('caseNumber.txt', "r")
    lastCase = caseNumber.read().splitlines()[0]
    Case = []
    Case.append(lastCase)
    newCase = [ int(x)+1 for x in Case ]

    with open('caseNumber.txt', mode = 'a',
    encoding = 'utf-8') as my_file:
        my_file.write('{}'.format(newCase))

    print('Thankyou, your case number is {}, Write it down!'.format(newCase))
运行此操作后,我得到:

这是添加到文件中的内容:0000[1](文件中的数字为0000) 首先,但它也增加了[1]


基本上,我一直坚持的部分是在没有括号的数字上加1。

newCase
是一个列表,它的值用括号括起来打印出来。如果您只想将列表中的值写入文件,则需要这样说。

newCase
是一个列表,打印时将其值括在括号中。如果您只想将列表中的值写入文件,则需要这样说。

您不需要创建列表,因为您只需要1项

由于要将列表转换为字符串,所以得到了列表表示形式:带括号

请注意,这并不是唯一的问题:您将追加到文本文件(
a
模式),而不是替换数字。你必须从头开始写这个文件。但是,在第一次读取时,必须保存完整的文件内容。我的建议:

with open("file.txt") as f:
    number,_,rest = f.read().partition(" ") # split left value only
    number = str(int(number)+1)   # increment and convert back to string

with open('file.txt',"w") as f:
    f.write(" ".join([number,rest])) # write back file fully
因此,如果文件包含:

0 this is a file
hello
每次运行上面的代码时,前导数字都会增加,但trailint文本会保留

1 this is a file
hello

依此类推……

您不需要创建列表理解,因为您只需要一项

由于要将列表转换为字符串,所以得到了列表表示形式:带括号

请注意,这并不是唯一的问题:您将追加到文本文件(
a
模式),而不是替换数字。你必须从头开始写这个文件。但是,在第一次读取时,必须保存完整的文件内容。我的建议:

with open("file.txt") as f:
    number,_,rest = f.read().partition(" ") # split left value only
    number = str(int(number)+1)   # increment and convert back to string

with open('file.txt',"w") as f:
    f.write(" ".join([number,rest])) # write back file fully
因此,如果文件包含:

0 this is a file
hello
每次运行上面的代码时,前导数字都会增加,但trailint文本会保留

1 this is a file
hello

以此类推……

顺便提一下,您的
案例与
lastCase
相同,创建它没有意义。文件的格式是什么?档案里还有其他东西吗?还是只有这个号码?它以0000开头,是否保留前导零?这个数字会变大吗?顺便问一下,您的
案例与
lastCase
相同,创建它没有意义。文件的格式是什么?档案里还有其他东西吗?还是只有这个号码?它以0000开头,是否保留前导零?这个数字会变大吗?是的,我不知道如何取值,也不知道如何用新的数字替换文本文件中的数字。你认为
lastCase=caseNumber.read().splitlines()[0]
中的
[0]
做了什么,Scott不是这么说的-他告诉你,你打印的是整个列表,而不是从列表中只切掉一个值。是的,我不知道如何获取值,并用新的数字替换文本文件中的数字。你认为
lastCase=caseNumber.read().splitlines()[0]
中的
[0]
是什么意思
正在做什么?@HughMungus,斯科特不是这么说的-他告诉你你正在打印整个列表,而不是只从列表中切掉一个值。