Neue Datei erstellen mit Python 2.7

  • Hallo Zusammen,

    im Rahmen meines Beerpong Tisch Projekts möchte ich für jedes begonnene Spiel den Spielverlauf festhalten.
    Mein erster Gedanke war, mit Spielstart eine Log-Datei zu erstellen. Diese soll schon im Dateinamen die Game_ID (timestamp) tragen. Bei jeder Aktion soll dann ein Zeitstempel mit dem neuen Spielstand in die Datei geschrieben werden.

    Vom Prinzip her kein Problem. Allerdings komme ich direkt zu Beginn nicht weiter.
    Python 2.7 kann (offenbar) mit dem file.open("filename", "w") nur auf bereits erstellte Dateien zugreifen.

    Code
    File "beerpong.py", line 172, in <module>
       beerpong()
     File "beerpong.py", line 95, in beerpong
       log = open(logfilename, 'w')
    IOError: [Errno 2] No such file or directory: '2017-05-06//22:22:33.log'

    Ich möchte nicht so einfach auf Python3 wechseln, da das Programm einige Methoden mit PySerial hat und ich da einiges ändern müsste.

    Kann ich auf anderem Wege eine Logdatei erzeugen? Wie kann ich hier eventuell eleganter vorgehen?

    Ziel ist es, für jedes Spiel einige eindeutige Logdatei mit dem Spielverlauf zu haben. Wie ist mir nicht so wichtig. Für andere Wege bin ich gerne zu haben :)

    Merci!

  • log = open(logfilename, 'w+') oder log = open(logfilename, 'a+')

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Einmal editiert, zuletzt von Gnom (6. Mai 2017 um 22:50)

  • Ich würde dir raten den Inhalt der Datei als JSON zu speichern, das würde es weitaus einfacher und flexibler gestalten die Daten wieder auszulesen usw.
    Als Dateiname würde ich auch einfach nur die GameID verwenden - das Datum erhälst du dann durch den Timestamp der Datei.

    Beispiel:

    [code=php]
    import time
    import json
    import os
    import io
    try:
    to_unicode = unicode
    except NameError:
    to_unicode = str

    gamefilespath = '/tmp/'

    def new_gamefile(id, data):
    with io.open(gamefilespath + id + '.json', 'w', encoding='utf8') as outfile:
    str_ = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)
    outfile.write(to_unicode(str_))


    def read_gamefile(id):
    with open(gamefilespath + id + '.json') as data_file:
    return json.load(data_file)


    # Usage:

    daten = {
    'Player1': {
    'Name': 'meigrafd',
    'Score': 123,
    },
    'Player2': {
    'Name': 'hamyam',
    'Score': 321,
    },
    }

    new_gamefile('987', daten)

    print time.ctime( os.path.getctime(gamefilespath + '987' + '.json') )

    game_data = read_gamefile('987')
    print game_data['Player1']
    print game_data['Player1']['Name']
    print game_data['Player1']['Score']
    [/php]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!