R.....y
R.....y
#naukaprogramowania #python #programowanie

chcę napisać program, który zapisuje do pliku kiedy kliknąłem przycisk.
Ktoś wie czemu to nie zapisuje do pliku?
https://hastebin.com/okofuranuy
0
  • Najlepsze
  • Wszystkie komentarze
rexxaris
@RedveKoronny: ten start czy tam join nie powinien być w pętli? Bo tak patrząc na ten kod, to odpalasz to, leci start, join i close - więc tak jakbyś zamykał tego listenera (ale nie znam się na pythonie aż tak dokładnie i tej libce)

https://stackoverflow.com/questions/63201895/on-right-click-with-pynput
1
R.....y
R.....y
@rexxaris: o dziwo właśnie ten join nie powinien być w pętli, i wszystko normalnie sie printuje do konsoli, tylko nie do pliku. Ten join akurat z-------m z docsów ( ͡° ͜ʖ ͡°)
0
rexxaris
@RedveKoronny: skoro wskakuje w metody i się printuje to coś z samym zapisem nie tak chyba, co? A debugowałeś to? Nie wyskakuje żaden błąd?
0
R.....y
R.....y
@rexxaris: nie wyskakuje. print(timestamp) wypisuje to co powinien do konsoli. Jedyny problem jest z wypisywaniem do pliku
0
F0rT3hW1n
@rexxaris: a wyprintuj os.getcwd() i sprawdź czy tam nie ma tego pliku
0
R.....y
R.....y
@F0rT3hW1n: raczej jest dobra ścieżka, bo jak skasuje pliki to tworzy na nowe w prawidłowym directory
0
F0rT3hW1n
@RedveKoronny: dlatego się używa context managera xD

zamknij ten plik jak go otworzyłeś bo inaczej nie odcyztasz danych xD
0
F0rT3hW1n
@RedveKoronny: mouselog.close() i keyboardlog.close()
0
F0rT3hW1n
@RedveKoronny: najprościej to po prostu w callbackach:

with open('log.txt', a) as f:
____f.write( ... )

w ten sposób plik jest automatycznie zamknięty po zapisie i nie uszkodzisz sobie danych
używając 'w' po zamknięciu pliku nadpiszesz zawartość przy kolejnym włączeniu, chyba że o to ci chodziło
0
rexxaris
0
R.....y
R.....y
@rexxaris: @F0rT3hW1n: sprawdze potem, dziena
0
Spofity
Spofity
@RedveKoronny: użyj with open wewnątrz funkcji, bo po co otwierać plik globalnie jesli używasz go i tak w pojedynczej funkcji
0
R.....y
R.....y
@Spofity: bo bym go otwierał co przyciśnięcie klawisza, a jak planuje klikach 80 klawiszy na minute, to bym sporo zasobów marnował
0
R.....y
R.....y
@F0rT3hW1n: przecież ja na koncu zamykam pliki
o tym że nadpisze pliki przy kolejnym włączeniu to wiem, i taki jest zamiar, tylko że nic mi do tego pliku i tak nie wypisuje...
0
F0rT3hW1n
@RedveKoronny: ale nigdy nie informujesz wątków w których działają listenery by się wyłączyły. Wystarczy przeczytać przykład z README libki że jak chcesz zatrzymać listener to musisz zwrócić False na końcu callbacka.

join() blokuje do czasu gdy thread zakończy działanie - w Twoim przypadku nigdy to nie następuje a apkę pewnie zamykasz przez SIGINT i kod nie dochodzi do momentu zamknięcia plików.

dwa najłatwiejsze sposoby jak to ogarnąć w screenie, w
0