我有一个使用 configparser 读取文件的函数,在 Windows 上我遇到了文件编码问题。
这是函数:
def getSetting(name,section):
cpass = configparser.RawConfigParser()
cpass.read('data/settings.data', encoding='UTF-8')
value = 'False'
for each_section in cpass.sections():
for (each_key, each_val) in cpass.items(each_section):
if each_section == section and each_key == name:
value = each_val
if name == 'log' and value == 'False':
value = translations['disabilitato_first_cap']
return value
我已经尝试过这个,正如我在 Stack Overflow 上发现的一个问题所说:
def getSetting(name,section):
cpass = configparser.RawConfigParser()
with open('data/settings.data', 'r', encoding='utf-8') as f:
cpass.read_file(f)
value = 'False'
for each_section in cpass.sections():
for (each_key, each_val) in cpass.items(each_section):
if each_section == section and each_key == name:
value = each_val
if name == 'log' and value == 'False':
value = translations['disabilitato_first_cap']
return value
我还尝试在我的 Python 文件之上添加这一行:
# -*- coding: utf-8 -*-
但没有任何效果。
这是生成文件的函数:
def checkSettings(if_false_create):
cpass = configparser.RawConfigParser()
try:
with open('data/settings.data', encoding="UTF-8") as f:
cpass.read_file(f)
return True
except IOError:
print(colors.wy+" "+translations['impostazioni_base_configurate'])
if if_false_create == False:
return False
else:
log = translations['disabilitato_first_cap']
settings = configparser.RawConfigParser()
settings.add_section("general_settings")
settings.set("general_settings", "log", translations['disabilitato_first_cap'])
settings.set("general_settings", "analyze_account", "doublegram_test_user")
settings.set("general_settings", "between_autoinvite_pause", "1-3 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
settings.set("general_settings", "between_invite_pause", "1-3 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
setup = open("data/settings.data", "w")
settings.write(setup)
settings.add_section("adding_settings")
settings.set("adding_settings", "between_autoinvite_pause", "1-3 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
settings.set("adding_settings", "auto_add_at_start", translations['abilitato_first_cap'])
settings.set("adding_settings", "if_account_out", translations['abilitato_first_cap'])
settings.set("adding_settings", "change_account_n_requests", "20 "+translations['richieste'])
settings.set("adding_settings", "change_account_pause", "1-5 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
settings.set("adding_settings", "consecutive_error_breaker", "30 "+translations['errori'])
settings.set("adding_settings", "start_point_members_file", translations['da_interrotto'])
settings.set("adding_settings", "add_using", translations['user_id_opt'])
settings.set("adding_settings", "between_adding_pause", "1-3 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
settings.set("adding_settings", "casual_pause_times", "3-120 "+translations['abbreviazione_secondi']+" ("+translations['casuale']+")")
settings.set("adding_settings", "exclude_bot", translations['abilitato_first_cap'])
settings.set("adding_settings", "exclude_admin", translations['abilitato_first_cap'])
settings.set("adding_settings", "photo_forcing", translations['abilitato_first_cap'])
settings.set("adding_settings", "filter_last_seen", translations['nessuna_restrizione'])
settings.set("adding_settings", "filter_dc", translations['nessuna_restrizione'])
settings.set("adding_settings", "filter_phone_number", translations['disabilitato_first_cap'])
settings.set("adding_settings", "stop_max_adding", translations['nessun_limite'])
settings.set("adding_settings", "continuous_adding", translations['disabilitato_first_cap'])
settings.set("adding_settings", "ca_ripet", translations['infinito'])
settings.set("adding_settings", "ca_pause", translations['nessuna_pausa'])
setup = open("data/settings.data", "w")
settings.write(setup)
setup.close()
return log