为什么这个功能在 macOS 上有效,在 Windows 上不起作用?

问题描述 投票:0回答:0

我有一个使用 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
python configparser
© www.soinside.com 2019 - 2024. All rights reserved.