我在一个类中包含此功能:
def new_config(self):
dict_dat = {"Display Set": self.main.id[20], "Display Width": self.main.id[4], "Display Height": self.main.id[5],
"Fullscreen": self.main.id[9], "Music Volume": self.main.id[11], "Sound Volume": self.main.id[13],
"Voice Volume": self.main.id[15], "Ambient Volume": self.main.id[17], "Other Volume": self.main.id[19]}
cgo = open(self.path, "w")
for name, dat in dict_dat.items():
cgo.write(name + ":" + dat)
cgo.close()
在各种“ self.main.id”中包含整数和布尔值。我想知道如何在文本文件中一行一行地编写值名称(例如“ Display Set”)和值(self.main.id [20]),而不必将所有内容都转换为字符串
如上所述,我收到错误消息:TypeError: Can't convert 'int' object to str implicitly
但是,事实是,如果可能的话,我想写数据而不必转换。
对于另一个文件,我使用了Pickle模块,但是通过手动打开文件来读取文件,任何人都不可读,因此在这种情况下它变得无用。
答案 0 :(得分:2)
一个明智的解决方案是使用f-strings(在Python 3.6+中可用),如下所示:
def new_config(self):
dict_dat = {"Display Set": self.main.id[20], "Display Width": self.main.id[4], "Display Height": self.main.id[5], "Fullscreen": self.main.id[9], "Music Volume": self.main.id[11], "Sound Volume": self.main.id[13], "Voice Volume": self.main.id[15], "Ambient Volume": self.main.id[17], "Other Volume": self.main.id[19]}
with open(self.path, 'a+') as f:
for name, dat in dict_dat.items():
f.write(f'{name}:{dat}\n')
如果dat
是布尔值True或False,则会写为“ True”或“ False”。
如果dat
是整数,则会写入整数值。
注1:我也强烈建议您使用with ... as ...
语句,该语句会自动并正确地在块末尾关闭文件。
注2:不幸的是,我终于了解到您正在使用Python 3.4。因此,该解决方案与您无关(您在f字符串上出现语法错误)。您可以升级到3.6+,也可以将f字符串替换为'{0}:{1}\n'.format(name, dat)
。
答案 1 :(得分:2)
正如我之前所说,您可以print
到一个文件。
def new_config(self):
dict_dat = {
'Display Set': 20,
'Display Width': 4,
'Display Height': 5,
'Fullscreen': 9,
'Music Volume': 11,
'Sound Volume': 13,
'Voice Volume': 15,
'Ambient Volume': 17,
'Other Volume': 19,
}
with open(self.path, 'w') as cgo:
for name, idx in dict_dat.items():
print(name, self.main.id[idx], sep=':', file=cgo)
答案 2 :(得分:1)
答案 3 :(得分:1)
考虑使用JSON:
import json
# write your dict
with open(self.path, "w") as file:
json.dump(dict_dat, file)
# read it back
with open(self.path) as file:
loaded_dict = json.load(file)
答案 4 :(得分:1)
每个Open()内置函数的 write()方法。 请检查文档。 - f.write(string)将字符串的内容写入文件,返回写入的字符数。要编写字符串以外的内容,需要先将其转换为字符串。
https://docs.python.org/3.3/tutorial/inputoutput.html
您可以通过这种方式更改代码。
file.write(str(name) + ":" + str(dat) + "\n")