Python Academy · leksjon

shutil for filoperasjoner

Kopier, flytt og arkiver filer

Leksjon 4 av 413 trinn

shutil for filoperasjoner er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva er shutil?

Modulen shutil (skallverktøy) tilbyr høynivåoperasjoner for filer: kopiering, flytting, sletting av katalogtrær og oppretting av arkiver. Den bygger videre på os for dagligdagse oppgaver.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
    f.write('hello')
print('created a.txt')

Kopiere en fil

shutil.copy(src, dst) kopierer innholdet i en fil og tillatelsesbitene til en ny plassering.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
    f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))

copy kontra copy2

shutil.copy2 fungerer som copy, men bevarer også metadata som tidsstempler. Bruk den når endringstidspunktet er viktig.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
    f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')

Kopiere et helt katalogtre

shutil.copytree(src, dst) kopierer en hel katalog rekursivt. Målplasseringen må ikke allerede finnes (med mindre du sender inn dirs_exist_ok=True).

import shutil, os

os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
    f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))

Flytte filer og mapper

shutil.move(src, dst) flytter eller gir nytt navn til en fil eller katalog. Den fungerer på tvers av filsystemer der os.rename ville ha mislyktes.

import shutil, os

os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
    f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))

Slette et katalogtre

shutil.rmtree(path) fjerner en katalog og alt innholdet i den. Bruk den med forsiktighet; det finnes ingen angremulighet.

import shutil, os

os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))

ignore_errors og sikkerhet

Hvis du sender ignore_errors=True til rmtree, unngår du en krasj når banen mangler. Dette er praktisk ved opprydding før en ny kjøring.

import shutil

shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')

Opprette et arkiv

shutil.make_archive(base_name, format, root_dir) samler en katalog i en zip- eller tar-fil med ett kall.

import shutil, os

os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
    f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))

Pakke ut et arkiv

shutil.unpack_archive(filename, extract_dir) gjør det motsatte ved å pakke ut en zip- eller tar-fil til en mappe.

import shutil, os

shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))

Finne kjørbare filer

shutil.which(name) finner et program i systemets PATH, på samme måte som skallkommandoen which. Den returnerer hele banen eller None.

import shutil

print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))

Diskbruk

shutil.disk_usage(path) rapporterer totalt antall byte, brukte byte og ledige byte for filsystemet som inneholder banen.

import shutil

usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))

Hurtigsjekk

Test forståelsen din av shutil.

Oppsummering

Du har lært om shutil for filoperasjoner:

  • copy/copy2 kopierer filer; copytree kopierer hele katalogtrær.
  • move gir nytt navn eller flytter; rmtree sletter katalogtrær.
  • make_archive/unpack_archive håndterer zip og tar.
  • which og disk_usage henter informasjon fra systemet.

Neste kurs: bygge kommandolinjeverktøy med argparse.

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «shutil for filoperasjoner» gratis?

Ja – hele teksten i «shutil for filoperasjoner» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «shutil for filoperasjoner»?

Kopier, flytt og arkiver filer Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «shutil for filoperasjoner»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Kjør kommandoer med subprocess
  2. Fange oppdata
  3. Miljø og os-modulen
  4. shutil for filoperasjoner
← Tilbake til Python Academy