2017-02-09 5 views
0

私の場合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

ちなみに、あなたの 'Case'は' lastCase'と同じで、それを作成する際のポイントはありません。 – DyZ

+0

ファイルの形式は何ですか?ファイル内に他のものがあるのか​​、それともこの番号だけですか?それは0000として始まりました。先行ゼロを維持したいですか?この数字は大きくなるのだろうか? – tdelaney

答えて

1

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 

に保たれていますなど...

3

newCaseはリストで、値は括弧で囲んで表示されます。 の値がのファイルに書き込まれるようにするには、それを言う必要があります。

+0

ええ、私は値を取る方法を知らないし、また、テキストファイル内の番号を新しい番号で置き換えます。 –

+0

'lastCase = caseNumber.read()。splitlines()[0]'の '[0]'は何をしていると思いますか? –

+1

@HughMungus、それはScottが言っていることではない - 彼はあなたがリストから1つの値を切り捨てるのではなく、リスト全体を印刷していると伝えている。 – gregory

関連する問題