[英]Convert integer within a list into a string to be written to a text file and later retrieved
我正在嘗試制作一個stats.txt
文件,我可以在其中存儲wins
、 draws
和losses
。 到目前為止,我能夠在程序運行時檢索值並修改它們的唯一方法是使用.readlines()
打開它們,然后將它們作為列表中的整數分配給變量(見下文)。
我的問題是我似乎找不到將它們寫回文本文件的方法,因為它們是列表形式。 誰能指出我正確的方向?
文本文件采用以下格式:
0\n
0\n
0\n
除了三個 0 和后面的enter.
我的代碼如下:
stats = open("C:/Users/JawshBawx/Documents/LiClipse Workspace/RPScLSp/RPScLSp_Src/Stats.txt","r")
lines = stats.readlines()
wins = list(int(val) for val in lines[0].split())
draws = list(int(val) for val in lines[1].split())
losses = list(int(val) for val in lines[2].split())
如果我在沒有list,
則輸出變為: generator object <genexpr> at 0x0000011CEF216CA8
,並且我無法使用 +1 修改值。
if result == 0:
print("Draw!")
draws = [x + 1 for x in draws]
elif result == 1:
print(ai_var+" Wins!")
losses = [x + 1 for x in losses]
elif result == 2:
print(ai_var+" Wins!")
losses = [x + 1 for x in losses]
elif result == 3:
print(user_var+" Wins!")
wins = [x + 1 for x in wins]
else:
print(user_var+" Wins!")
wins = [x + 1 for x in wins]
print(wins)
print(draws)
print(losses)
stats.close
with open("C:/Users/JawshBawx/Documents/LiClipse Workspace/RPScLSp/RPScLSp_Src/Stats.txt","w") as f:
f.write(wins)
f.write(draws)
f.write(losses)
我的結果是:
TypeError: write() argument must be str, not list
我無法將其轉換為字符串,並以這樣的方式寫入,即它會以與我需要的相同格式檢索,以便能夠在每次程序運行時處理 i 。
我寧願將文本文件中的值作為整數導入,修改它們,然后將它們寫為整數,但我還沒有找到一種方法來做到這一點。 我知道必須有更好的方法來完成上述工作。
您想使用writelines()
而不是write()
來編寫可迭代對象(例如字符串列表),類似於獲取單個字符串的方法是read()
和獲取字符串列表的方法是readlines()
。
在這種情況下,您應該使用str.strip()
而不是str.split()
。 str.split()
用空字母(空格、換行符、制表符等)分割字符串並返回一個列表。
但是,您似乎不需要此處的列表,只想刪除它\n
,然后,您可以使用str.strip()
。 這會刪除字符串前后的空字母。
演示:
>>> s = '0\n' >>> s '0\n' >>> s.strip() '0' >>> s.split() ['0'] >>> int(s.strip()) 0
然后,它是一個 int 對象。 所以你可以完全放棄這些列表理解並使用object += 1
。
但是,當您將其寫回文件時,您可以使用str()
函數將其轉換為字符串對象。
如果您不想將它們全部放在一行中,請記住還要添加一個+\n
:
with open("C:/Users/JawshBawx/Documents/LiClipse Workspace/RPScLSp/RPScLSp_Src/Stats.txt", "r") as f: lines = f.readlines() wins = int(lines[0].strip()) draws = int(lines[1].strip()) losses = int(lines[2].strip()) if result == 0: print("Draw!") draws += 1 elif result in [1, 2]: print(ai_var+" Wins!") losses += 1 else: print(user_var+" Wins!") wins += 1 with open("C:/Users/JawshBawx/Documents/LiClipse Workspace/RPScLSp/RPScLSp_Src/Stats.txt","w") as f: f.write(str(wins)+'\n') f.write(str(draws)+'\n') f.write(str(losses)+'\n')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.