Maven_super_30_LeseTolkeKode_4 - itnett/FTD02H-N GitHub Wiki
https://raw.githubusercontent.com/Madhav-MKNC/noob-scripts/main/clean%20folder.py
La oss gå gjennom koden linje for linje for å forklare hva den gjør og hvordan den fungerer. Jeg vil kommentere koden detaljert for å gjøre den enklere å lese og forstå.
Koden: clean_folder.py
import os
- Importerer
os-modulen:os-modulen gir funksjonalitet for å samhandle med operativsystemet, som fil- og katalogoperasjoner. Denne modulen er nødvendig for å få tilgang til filer i gjeldende mappe, sjekke om mapper eksisterer, lage nye mapper, og flytte filer.
def createIfNot(folder):
if not os.path.exists(folder):
os.makedirs(folder)
- Funksjonen
createIfNot(folder):- Parameter
folder: Navnet på mappen som funksjonen skal sjekke eller lage. os.path.exists(folder): Sjekker om mappen med navnetfolderallerede eksisterer.os.makedirs(folder): Lager mappen hvis den ikke eksisterer. Dette sikrer at koden kan opprette de nødvendige mappene (f.eks.Images,Audios,Videos,Docs) for å organisere filer uten å generere feil hvis mappen allerede eksisterer.
- Parameter
def move(folderName, files):
for file in files:
os.replace(file,folderName)
- Funksjonen
move(folderName, files):- Parameter
folderName: Navnet på mappen hvor filene skal flyttes. - Parameter
files: En liste over filnavn som skal flyttes. - Løkken
for file in files:: Itererer gjennom hver fil i listenfiles. os.replace(file, folderName): Flytter filen til mappenfolderName. Denne funksjonen erstatter også filen hvis den allerede eksisterer i destinasjonsmappen.
- Parameter
files = os.listdir()
files = os.listdir(): Lister opp alle filene og mappene i gjeldende arbeidskatalog. Dette er utgangspunktet for å finne ut hvilke filer som skal organiseres.
createIfNot("Images")
createIfNot("Audios")
createIfNot("Videos")
createIfNot("Docs")
- Oppretter nødvendige mapper: Disse funksjonskallene sikrer at mappene
Images,Audios,Videos, ogDocseksisterer. Hvis de ikke gjør det, vilcreateIfNot-funksjonen lage dem.
Imgs = [".png", ".jpg", ".jpeg"]
Images = [file for file in files if os.path.split(file)[1].lower() in Imgs]
Imgs: En liste over filendelser som identifiserer bildeformater (f.eks..png,.jpg,.jpeg).Images: En liste over filer i gjeldende katalog som har en av de oppførte bildeendelsene.os.path.split(file)[1].lower()tar filnavnet, konverterer det til små bokstaver, og sjekker om endelsen finnes iImgs.
Auds = [".mp3", ".m4a", ".wav", ".flv"]
Audios = [file for file in files if os.path.split(file)[1].lower() in Auds]
Auds: En liste over filendelser som identifiserer lydformater (f.eks..mp3,.m4a,.wav,.flv).Audios: En liste over filer i gjeldende katalog som har en av de oppførte lydendelsene.
Videos = [file for file in files if os.path.split(file)[1].lower() == ".mp4"]
Videos: En liste over filer i gjeldende katalog som har.mp4som filendelse. Denne sjekker bare for.mp4-formatet, så hvis du ønsker å inkludere flere videoformater, kan du utvide denne listen som medImgsogAuds.
Dcs = [".pdf", ".doc", ".docx", ".txt"]
Docs = [file for file in files if os.path.split(file)[1].lower() in Dcs]
Dcs: En liste over filendelser som identifiserer dokumentformater (f.eks..pdf,.doc,.docx,.txt).Docs: En liste over filer i gjeldende katalog som har en av de oppførte dokumentendelsene.
move("Images", Images)
move("Audios", Audios)
move("Videos", Videos)
move("Docs", Docs)
- Flytt filer til de riktige mappene: Disse funksjonskallene flytter filene i
Images,Audios,Videos, ogDocstil sine respektive mapper ved å brukemove-funksjonen.
Sammendrag
Dette skriptet er designet for å organisere filer i en mappe basert på deres filtyper. Det gjør dette ved å:
- Sjekke om mapper for bilder, lydfiler, videoer og dokumenter eksisterer, og opprette dem hvis de ikke gjør det.
- Gå gjennom alle filene i gjeldende mappe, filtrere dem basert på filendelse, og deretter flytte dem til riktig mappe.
Dette skriptet er nyttig for å holde en mappe ryddig og organisert ved å gruppere filer etter type. Forbedringer kan inkludere å legge til flere filtyper, håndtere situasjoner der filer med samme navn allerede eksisterer i destinasjonsmappen, og kanskje også inkludere en loggføring av hvilke filer som er flyttet.
Bash Skript for å Organisere Filer etter Type
Her er et bash-skript som gjør samme jobben som Python-skriptet, ved å organisere filer i en mappe basert på deres type.
#!/bin/bash
# Funksjon for å sjekke om en mappe eksisterer, og lage den hvis den ikke gjør det
createIfNot() {
if [ ! -d "$1" ]; then # Sjekk om mappen ikke eksisterer
mkdir "$1" # Lag mappen
fi
}
# Funksjon for å flytte filer til en bestemt mappe
move() {
folder="$1" # Navnet på mappen
shift # Fjern første argument (mappenavnet) fra argumentlisten
for file in "$@"; do # Iterer gjennom resten av argumentene (filene)
mv "$file" "$folder"/ # Flytt filen til mappen
done
}
# Liste over alle filer i gjeldende katalog
files=(*)
# Opprett mapper for ulike filtyper
createIfNot "Images"
createIfNot "Audios"
createIfNot "Videos"
createIfNot "Docs"
# Arrays som holder filtyper
imgs=(".png" ".jpg" ".jpeg")
audios=(".mp3" ".m4a" ".wav" ".flv")
videos=(".mp4")
docs=(".pdf" ".doc" ".docx" ".txt")
# Funksjon for å finne filer med bestemte filendelser
find_files() {
local extensions=("$@")
local matched_files=()
for file in "${files[@]}"; do
for ext in "${extensions[@]}"; do
if [ "$file" == *"$ext" ](/itnett/FTD02H-N/wiki/-"$file"-==-*"$ext"-); then
matched_files+=("$file")
fi
done
done
echo "${matched_files[@]}"
}
# Finn og flytt filer til riktig mappe
move "Images" $(find_files "${imgs[@]}")
move "Audios" $(find_files "${audios[@]}")
move "Videos" $(find_files "${videos[@]}")
move "Docs" $(find_files "${docs[@]}")
Forklaring av Bash Skript
-
Shebang (
#!/bin/bash): Forteller systemet at skriptet skal kjøres med bash. -
Funksjonen
createIfNot:- Sjekker om en mappe eksisterer ved hjelp av
-d-flagget. - Hvis mappen ikke eksisterer (
! -d), opprettes den medmkdir.
- Sjekker om en mappe eksisterer ved hjelp av
-
Funksjonen
move:- Tar navnet på mappen som første argument, og en liste over filer som de resterende argumentene.
- Bruker
mv-kommandoen til å flytte hver fil til den angitte mappen.
-
Variabelen
files:- Bruker
*-jokertegnet til å liste opp alle filer og mapper i gjeldende katalog.
- Bruker
-
Oppretter nødvendige mapper:
- Funksjonen
createIfNotbrukes til å sikre at mappeneImages,Audios,Videos, ogDocseksisterer.
- Funksjonen
-
Arrays som holder filtyper:
- Definerer lister over filendelser for forskjellige typer filer (bilder, lydfiler, videoer, dokumenter).
-
Funksjonen
find_files:- Går gjennom alle filene og sjekker om de har en av de spesifiserte endelsene.
- Returnerer en liste over filer som samsvarer med endelsene.
-
Flytt filer til riktig mappe:
- Kaller
move-funksjonen med riktig mappe og filene som skal flyttes.
- Kaller
PowerShell Skript for å Organisere Filer etter Type
Her er et PowerShell-skript som utfører den samme oppgaven:
# Funksjon for å sjekke om en mappe eksisterer, og lage den hvis den ikke gjør det
function Create-IfNot {
param (
[string]$folderName # Navnet på mappen som skal sjekkes eller lages
)
if (-not (Test-Path -Path $folderName)) { # Sjekker om mappen ikke eksisterer
New-Item -ItemType Directory -Path $folderName # Lager mappen
}
}
# Funksjon for å flytte filer til en bestemt mappe
function Move-Files {
param (
[string]$folderName, # Navnet på mappen hvor filene skal flyttes
[array]$files # Listen over filer som skal flyttes
)
foreach ($file in $files) { # Iterer gjennom listen over filer
Move-Item -Path $file -Destination $folderName # Flytt filen til mappen
}
}
# Henter listen over alle filer i gjeldende katalog
$files = Get-ChildItem -File
# Opprett mapper for ulike filtyper
Create-IfNot "Images"
Create-IfNot "Audios"
Create-IfNot "Videos"
Create-IfNot "Docs"
# Arrays som holder filtyper
$imgs = @(".png", ".jpg", ".jpeg")
$audios = @(".mp3", ".m4a", ".wav", ".flv")
$videos = @(".mp4")
$docs = @(".pdf", ".doc", ".docx", ".txt")
# Funksjon for å finne filer med bestemte filendelser
function Find-Files {
param (
[array]$extensions # Array av filendelser
)
return $files | Where-Object { $extensions -contains $_.Extension.ToLower() }
}
# Finn og flytt filer til riktig mappe
Move-Files "Images" (Find-Files $imgs)
Move-Files "Audios" (Find-Files $audios)
Move-Files "Videos" (Find-Files $videos)
Move-Files "Docs" (Find-Files $docs)
Forklaring av PowerShell Skript
-
Funksjonen
Create-IfNot:- Bruker
Test-Pathtil å sjekke om en mappe eksisterer. - Hvis mappen ikke eksisterer, opprettes den med
New-Item.
- Bruker
-
Funksjonen
Move-Files:- Flytter filer til en bestemt mappe ved hjelp av
Move-Item.
- Flytter filer til en bestemt mappe ved hjelp av
-
Variabelen
$files:- Bruker
Get-ChildItem -Filetil å liste opp alle filer i gjeldende katalog.
- Bruker
-
Oppretter nødvendige mapper:
Create-IfNot-funksjonen sikrer at mappeneImages,Audios,Videos, ogDocseksisterer.
-
Arrays som holder filtyper:
- Lister over filendelser for forskjellige typer filer (bilder, lydfiler, videoer, dokumenter).
-
Funksjonen
Find-Files:- Bruker
Where-Objecttil å filtrere filene som samsvarer med de spesifiserte endelsene.
- Bruker
-
Flytt filer til riktig mappe:
- Kaller
Move-Files-funksjonen med riktig mappe og de samsvarende filene.
- Kaller
Sammendrag
Begge skriptene (Bash og PowerShell) utfører samme oppgave som det opprinnelige Python-skriptet: å organisere filer i en katalog ved å flytte dem til mapper basert på filtype. Hvert skript bruker funksjoner som er spesifikke for det aktuelle kommandolinjeverktøyet, med grundige kommentarer for å hjelpe deg med å forstå hva som skjer i hver linje.