使用 file.readline() 混合整数和字符串
Utilizing file.readline() with a mix of integers and strings
我是 Python 的新手,我正在开发一款游戏,保存多项统计数据。然而,在尝试使用 readline()
加载这些统计数据时,我碰巧得到了混乱的值,混合了保存的各种统计数据。
# Save
...
file.write(str(p_lv)) # 1 (line 3)
file.write(str(p_xp)) # 10 (line 4)
file.write(str(p_swd)) # s01 (line 5)
...
# Load
...
p_lv = int(file.readline(3))
p_xp = int(file.readline(4))
p_swd = file.readline(5)
...
当我在游戏中进行存档时,它会将整个存档保存为单个字符串,如下所示:
8010015s01100Nutik
我试图用盒子里的那个存档来调用加载命令,但是结果是:
ValueError: invalid literal for int() with base 10: '5s01'
它混淆了我所在的位置,有没有办法让我读取它,例如,我写的第四个项目?
看来你没有写换行符。
将每个写入调用更改为:
file.write(str(...) + '\n')
此外,file.readline()
不接受参数。删除它的数字参数,或者如果您没有使用所有行,请执行:
lines = file.readlines()
x = int(lines[3])
...
如果您打算将每个统计值保存在文件中的单独一行中,那么您必须在保存时手动添加换行符。有些喜欢:
file.write(str(p_lv) + "\n") # 1 (line 3)
file.write(str(p_xp) + "\n") # 10 (line 4)
file.write(str(p_swd) + "\n") # s01 (line 5)
读回文件时,使用readlines
方法,实际上是returns读取文件中的行数组;因此您将能够按顺序访问数据:
lines = file.readlines()
p_lv = int(lines[3])
p_xp = int(lines[4])
p_swd = lines[5]
更好的解决方案是 serialize/deserialize 格式为 JSON 的统计信息:将您的统计信息保存在字典中,例如:
stats = {
'p_lv': 123,
'p_xp': 234,
'p_swd': 'some string'
}
您将另存为:
import json
with open('filename.txt', 'w') as f:
f.write(json.dumps(stats))
并将其读回:
with open('filename.txt') as f:
stats = json.loads(f.read())
我是 Python 的新手,我正在开发一款游戏,保存多项统计数据。然而,在尝试使用 readline()
加载这些统计数据时,我碰巧得到了混乱的值,混合了保存的各种统计数据。
# Save
...
file.write(str(p_lv)) # 1 (line 3)
file.write(str(p_xp)) # 10 (line 4)
file.write(str(p_swd)) # s01 (line 5)
...
# Load
...
p_lv = int(file.readline(3))
p_xp = int(file.readline(4))
p_swd = file.readline(5)
...
当我在游戏中进行存档时,它会将整个存档保存为单个字符串,如下所示:
8010015s01100Nutik
我试图用盒子里的那个存档来调用加载命令,但是结果是:
ValueError: invalid literal for int() with base 10: '5s01'
它混淆了我所在的位置,有没有办法让我读取它,例如,我写的第四个项目?
看来你没有写换行符。
将每个写入调用更改为:
file.write(str(...) + '\n')
此外,file.readline()
不接受参数。删除它的数字参数,或者如果您没有使用所有行,请执行:
lines = file.readlines()
x = int(lines[3])
...
如果您打算将每个统计值保存在文件中的单独一行中,那么您必须在保存时手动添加换行符。有些喜欢:
file.write(str(p_lv) + "\n") # 1 (line 3)
file.write(str(p_xp) + "\n") # 10 (line 4)
file.write(str(p_swd) + "\n") # s01 (line 5)
读回文件时,使用readlines
方法,实际上是returns读取文件中的行数组;因此您将能够按顺序访问数据:
lines = file.readlines()
p_lv = int(lines[3])
p_xp = int(lines[4])
p_swd = lines[5]
更好的解决方案是 serialize/deserialize 格式为 JSON 的统计信息:将您的统计信息保存在字典中,例如:
stats = {
'p_lv': 123,
'p_xp': 234,
'p_swd': 'some string'
}
您将另存为:
import json
with open('filename.txt', 'w') as f:
f.write(json.dumps(stats))
并将其读回:
with open('filename.txt') as f:
stats = json.loads(f.read())