Code: Alles auswählen
import configparser
import os
""" Konstante """
INI_FILENAME = "config"
FILE_EXTENSION ="ini"
""" init vars """
separator = os.sep
newline = os.linesep
configFile = os.getcwd() + separator + INI_FILENAME + "." + FILE_EXTENSION
config = configparser.ConfigParser()
def handle_menu_language(choose_language_menu):
while True:
for index, item in enumerate(choose_language_menu, 1):
print("{} {}".format(index, item[0]))
print ""
choice = int(input("Select a language: ")) - 1
if 0 <= choice < len(choose_language_menu):
choose_language_menu[choice][1]()
else:
print("Please only numbers between 1 - {}.".format(
len(choose_language_menu)))
def set_language(prompt):
with open(configFile, 'w') as f:
f.write("[Language_Configuration]\n")
f.write("\n")
f.write("language=" + prompt)
f.close()
def check_configfile_exists():
if not os.path.isfile(configFile) or not os.access(configFile, os.R_OK):
print("**\n\tConfig-file does not exist.\n**")
choose_language_menu = [
["German", set_language("German")],
["English", set_language("English")],
["Quit", quit]
]
handle_menu_language(choose_language_menu)
else:
print("**\n\tConfig-file does exist.\n**")
def main():
check_configfile_exists()
if __name__ == "__main__":
main()
Und komischer weise legt das Skript trotz Fehlermeldung die Datei config.ini an, jedoch sieht der Inhalt der INI-Datei wie folgt aus:Traceback (most recent call last):
File "D:/Dan/Python/�bung/Calc/start.py", line 185, in <module>
main()
File "D:/Dan/Python/�bung/Calc/start.py", line 166, in main
check_configfile_exists()
File "D:\Dan\Python\�bung\Calc\config.py", line 41, in check_configfile_exists
handle_menu_language(choose_language_menu)
File "D:\Dan\Python\�bung\Calc\config.py", line 22, in handle_menu_language
choose_language_menu[choice][1]()
TypeError: 'NoneType' object is not callable
Außerdem muss ich noch hinzufügen, das es egal ist, welche Sprache ich wähle. Ich kann German oder English wählen , der Inhalt bleibt immer gleich. Ich hätte auch für jede Sprache eine Funktion schreiben können, jedoch wären die Funktionen alle gleich, nur das der Eintrag der jeweiligen Sprache sich variiert hätte. Aus diesem Grund zog ich es vor, das Problem über das Argument zu lösen. Nur leider "spinnt" da meint Skript etwas. Hat jemand eine Ahnung warum?[Language_Configuration]
language=English
