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å.
clean_folder.py
Koden: 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 navnetfolder
allerede 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
, ogDocs
eksisterer. 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.mp4
som filendelse. Denne sjekker bare for.mp4
-formatet, så hvis du ønsker å inkludere flere videoformater, kan du utvide denne listen som medImgs
ogAuds
.
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
, ogDocs
til 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
createIfNot
brukes til å sikre at mappeneImages
,Audios
,Videos
, ogDocs
eksisterer.
- 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-Path
til å 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 -File
til å liste opp alle filer i gjeldende katalog.
- Bruker
-
Oppretter nødvendige mapper:
Create-IfNot
-funksjonen sikrer at mappeneImages
,Audios
,Videos
, ogDocs
eksisterer.
-
Arrays som holder filtyper:
- Lister over filendelser for forskjellige typer filer (bilder, lydfiler, videoer, dokumenter).
-
Funksjonen
Find-Files
:- Bruker
Where-Object
til å 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.