Puncte:0

Cum să faceți „corect” acest script python de reorganizare a fișierelor să solicite introducerea utilizatorului, să verificați validitatea și apoi să verificați dublu?

drapel vn

Am o versiune modificată a acesteia scenariu foarte tare care a fost scris în jumătatea mai bună a unui deceniu în urmă pentru a reorganiza foldere foarte mari pline de fișiere aleatorii în directoarele lor respective. Modificările mele sunt irelevante pentru întrebare, așa că voi folosi scriptul original în exemplul meu de mai jos.

L-am setat să solicite introducerea utilizatorului în loc să codifice variabilele hardcoding în script (prezentat mai jos între EDIȚIILE MELE ACTUALE comentarii) și asta pare să funcționeze suficient de bine, dar sunt îngrijorat că ar putea ajunge să mănânce accidental un întreg director pe care nu intenționez să funcționeze, dacă greșesc.

Întrebări:

  1. Există vreun mijloc prin care îl pot face să solicite utilizatorului reorg_dir astfel încât să permită utilizatorului să parcurgă directoare, să selecteze un director și apoi să verifice din nou pentru a se asigura că utilizatorul este mulțumit de ceea ce se va întâmpla?

  2. În același sens, există un mijloc prin care cineva ar putea fi solicitat să excludă un anumit tip de fișier, altfel nu exclude nimic?

  3. Continuând, ce zici remove_emptyfolders, altfel presupunem Adevărat ?

(Întrebarea 1 este cea mai importantă. Nu mă aștept să rezolvi toată problema pentru restul, dacă nu te simți ambițios!)

#!/usr/bin/env python3

import os
subproces de import
import shutil

# --------------------------------------------- -------
reorg_dir = "/path/to/directory_to_reorganize"
exclude = (".jpg") # de exemplu
remove_emptyfolders = Adevărat
# --------------------------------------------- --------

# EDIȚIILE MELE ACTUALE ---------------------------------------
în timp ce este adevărat:
    dirReorg= input(„Ce director doriți să organizați după tipul de fișier?”)
    dacă nu os.path.exists(dirReorg):
        print("Acea cale nu există. Încercați din nou!")
        continua
    pauză
reorg_dir = os.path.abspath(dirReorg)
# final EDITĂRILE MELE ACTUALE -----------------------------------

pentru root, dirs, fișiere în os.walk(reorg_dir):
    pentru numele în fișiere:
        subiect = rădăcină+"/"+nume
        if name.startswith("."):
            extensie = „.hidden_files”
        elif nu "." in nume:
            extensie = ".without_extension"
        altceva:
            extensie = nume[nume.rfind("."):]
        dacă nu extensie, excludeți:
            new_dir = reorg_dir+"/"+extensie[1:]
            dacă nu os.path.exists(new_dir):
                os.mkdir(new_dir)
            shutil.move(subiect, new_dir+"/"+nume)

def cleanup():
    lista de fișiere = []
    pentru root, dirs, fișiere în os.walk(reorg_dir):
        pentru numele în fișiere:
            filelist.append(rădăcină+"/"+nume)
    directoare = [articol[0] pentru element din os.walk(reorg_dir)]
    pentru dr în directoare:
        potriviri = [articol pentru articol din lista de fișiere dacă dr în articol]
        dacă len(se potrivește) == 0:
            încerca:
                shutil.rmtree(dr)
            cu excepția FileNotFoundError:
                trece

dacă remove_emptyfolders == Adevărat:
    curăță()

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.