簡體   English   中英

我無法在 Python 3.9 代碼中讀取/寫入文件

[英]I can't read/write a file in my Python 3.9 code

我不知道會發生什么,但我的代碼不想正常工作。 這是代碼:

with open("count.txt","w+") as f:
    print(f.read())
    a=int(f.read())
    b=int(a+1)
    print(str(b))
    f.write(str(b))
input()

我把“count.txt”放在同一個目錄下,這就是“count.txt”的內容

0

這是我得到的錯誤:

Traceback (most recent call last):
  File "C:\FILEDIRECTORY\plus.py", line 3, in <module>
    a=int(f.read())
ValueError: invalid literal for int() with base 10: ''

然后,“count.txt”變為空白(0 字節)。 我試圖將模式更改為“r”,但發生了同樣的錯誤,但“count.txt”的內容沒有被刪除。 然后我嘗試將模式更改為“w”,將f.write內容更改為“1”,並對其他代碼進行注釋。

with open("count.txt","w") as f:
    '''print(f.read())
    a=int(f.read())
    b=int(a+1)
    print(str(b))'''
    f.write("1")
input()

但現在它起作用了。 “count:txt”的內容變成了“1”! 我也試試這個:

with open("count.txt","w") as f:
    '''print(f.read())
    a=int(f.read())
    b=int(a+1)
    print(str(b))'''
    a="1"
    f.write(a)
input()

它仍然有效,所以我認為讀取模式已損壞。 但我不知道為什么? 也許我安裝 Python 不正確?

f.read()讀取整個文件並將當前 position 留在文件末尾,因此第二次f.read()調用從文件末尾開始並且不讀取任何內容。 相反,將讀取的內容保存到變量中。

另外, w+會先截斷文件,使用r+可以避免這種情況。

我還假設您要清除文件中的先前值,因此使用f.truncate清除文件並使用 f.seek 將f.seek重置為文件的開頭。

把它們放在一起:

with open("count.txt","r+") as f:
    content = f.read()
    print(content)
    a = int(content)
    b = a+1
    print(b)
    f.truncate(0)
    f.seek(0)
    f.write(str(b))
input()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM