login_zajety_sic
login_zajety_sic
#python #programowanie #codereview

Zwracam się do Was z prośbą o pomoc w uporządkowaniu kodu który naklepałem w Pythonie,

Skrypt ma odczytywać wskazany przez usera plik .csv i na jego podstawie utworzyć makro do systemu które będzie zapisane na pendrive.

jestem początkujący, skrypt działa tak jak chce w obecnej formie, docelowo chce go wypuścić w postaci pojedynczego pliku .exe (py2exe) co by jego obsługa nie wymagała uruchamiania wiersza poleceń ale chciałbym poprawić jeszcze ten kod jeśli się da.

Kod: https://pastebin.com/ZVLrzP44
  • Najlepsze
  • Wszystkie komentarze
Xaaq
Xaaq
2
@login_zajety_sic:
1. Linijki 17-22 - masz zduplikowaną linijkę zwracającą ścieżkę, można to zrobić mniej więcej tak
2. Jeśli chcesz połączyć stringi ze zmiennymi to używaj Pythonowego formatowania stringów - a najlepiej f-stringów.
3. Jeśli robisz operacje na ścieżkach do plików to używaj os.path.join() lub Path z modułu pathlib - one zajmą się wstawieniem slashy lub backslashy (zależnie od systemu), więc nie będziesz musiał ich ręcznie wstawiać i escape'ować.
4. Komentarze, które mówią oczywiste
juszczus
@Xaaq: len spowoduje zmianę generatora na listę czyli zamiast lecieć po linii zaalokujesz pamięć na cały plik. Lepiej do countera użyć enumerate:
https://stackoverflow.com/questions/2081836/how-to-read-specific-lines-from-a-file-by-line-number
informatyk
@login_zajety_sic: osobiście jeszcze trochę popracowałbym tu na modularyzacją. Więcej mniejszych funkcji, dzięki czemu kod staje się samoopisowy i bardziej czytelny, a przy tym możesz unikać zbędnych komentarzy.

Dobrymi (choć nie jedynymi) kandydatami na osobne funkcje są np. bloki z linii 17-22 oraz 58-99.

Lepiej będzie też wyglądało jeśli początek wykonywania programu będzie jasno określony (oczywiście przed doSomething powinno być wcięcie, tylko wykop je