Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Sarverott/d656b60d56bad7f83c093cb4fb57878e to your computer and use it in GitHub Desktop.
Save Sarverott/d656b60d56bad7f83c093cb4fb57878e to your computer and use it in GitHub Desktop.
Casual common thing, spontanously uploaded for educational reasons, for new programmers to learn. NOTE: Variable names, function names and comments should be in english for more official impression and professional code cleanliness! My use of polish is politeness.
#!/usr/bin/python3
# ten poczatek "#!/usr/bin/python3" jest dla linuxa, mowi mu jakiego interpretera uzyc,
# wtedy w terminalu mozna zamiast "python3 skrypt.py" uruchomic go piszac "./skrypt.py"
# zwyczajny kod zycia codziennego, spontanicznie upubliczniony w celach edukacyjnych,
# aby nowi programiści mogli sie zainspirowac. UWAGA: Nazwy zmiennych, nazwy funkcji
# i komentarze powinny byc w języku angielskim, jesli chcemy zapewnic bardziej oficjalne
# wrazenie i dla profesjonalnej czystosci kodu
# CEL: zautomatyzuj porzadkowanie plikow
# problematyka:
# - kopiowanie TYLKO plikow z foldera do foldera
# - zmiana ich nieunormowanej nazyw zaczynajacych sie konkretnie
# - ma dzialac niezaleznie gdzie i czy uzyje "folder\stary" czy "C:\projekt\folder\start:"
import os
#import shutil
FLODERY = {
"z lokacji": "static-audio-samples/announce-ad",
"do lokacji": "static-audio-samples"
}
POCZATKI_PLIKOW = {
"intro-": "begin-ad.voice",
"outro-": "end-ad.voice"
}
def przenies_pliki ( stary_folder , nowy_folder , slownik_zamian_prefixow = {} ):
# 1.: upewnijmy sie co do tego co mamy na starcie
if not os.path.isabs( stary_folder ): # jesli stary jest nieprecezyjna sciezka to "absolutuj" sciezke
stary_folder = os.path.abspath( stary_folder )
if not os.path.isabs( nowy_folder ): # jesli nowy jest nieprecezyjna sciezka to "absolutuj" sciezke
nowy_folder = os.path.abspath( nowy_folder )
# .. potrzeba nam listy tych plikow
zawartosc_foldera = os.listdir(stary_folder) # to cos ala: ["hasla.txt","pamietnik.txt","brudnopis.txt"]
raport_zmian = {} # okreslmy gdzie skladowac finalny efekt
# 2. zacznijmy od wyliczania punktow tej listy
for nazwa_pliku in zawartosc_foldera: # dla kazdej nazwy na liscie zawartosci foldera
pierwotna_scierzka = os.path.join( # klej pelna aktualna lokalizacje pliku
stary_folder,
nazwa_pliku
)
if not os.path.isfile( pierwotna_scierzka ): # filtr
continue # jeśli nie jest plikiem: olej to i idź do następnego
for zaczynajace in slownik_zamian_prefixow:
# wymyslilem sobie ze
# slownik { HASLO(do-zastapienia) : DEFINICJA(czym-zastapic) }
# bedzie moimi prefixami warunkowego przechrzczenia
if filename.startswith( zaczynajace ):
# jeśli zaczyna się od [...]
# to czesc nazwy przed pierwsza kropka zamien na wybrany przeze mnie
nazwopodzielator = nazwa_pliku.split(".")
nazwopodzielator[ 0 ] = slownik_zamian_prefixow[ zaczynajace ]
nazwa_pliku = ".".join( nazwopodzielator )
break # py> dalsze szukanie jest zbedne, przerwij petle i idz dalej
docelowa_scierzka = os.path.join( # klej wspolzedne pod jaka scierzka ma teraz byc
nowy_folder,
nazwa_pliku
)
os.rename(pierwotna_scierzka, docelowa_scierzka) # przenies plik metoda zmiany nazwy
#os.replace(pierwotna_scierzka, docelowa_scierzka)
#shutil.move(pierwotna_scierzka, docelowa_scierzka)
raport_zmian[ pierwotna_scierzka ] = docelowa_scierzka # zakonotuj co trafilo gdzie
return raport_zmian # zakoncz dajac wynikiem tej funkcji spis jakie pliki gdzie trafily
print ( przenies_pliki( FLODERY[ "z lokacji" ], FLODERY[ "do lokacji" ], POCZATKI_PLIKOW) )
# >>> PRINT_OUTPUT: konsola wypluje zbity bloczek tekstu
# mozna to upiekrzyc json.dumps(<raportDict>, indent=4)
# trzeba wtedy pamiętać aby doimportować biblioteke wbudowana json
# polecam pobawić sie we wrzucanie print'a i wyświetlanie niezrozumialych bajerow
# polecam rowniez popsuc powyzszy tekst i patrzec co mowi terminal
# polecam tez pokminic nad podorabianiem funkcji uduniecia pustego foldera
# milej zabawy ^^
. static-audio-samples _
. --. announce-ad _
. --. funny-sound-2137.mp3
. --. hits-today _
. --. begin-ad.voice.1.ogg
. --. begin-ad.voice.1.wav
. --. begin-ad.voice.2.ogg
. --. end-ad.voice.1.wav
. --. end-ad.voice.4.ogg
. --. end-ad.voice.92.wav
. main.py
. static-audio-samples _
. --. announce-ad _
. --. --. intro-voice.1.ogg
. --. --. intro-voice.1.wav
. --. --. intro_voice.2.ogg
. --. --. outro_voice.1.wav
. --. --. outro-voice.4.ogg
. --. --. ontro-say.92.wav
. --. funny-sound-2137.mp3
. --. hits-today _
. main.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment