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 navnet folder 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.
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 listen files.
    • os.replace(file, folderName): Flytter filen til mappen folderName. Denne funksjonen erstatter også filen hvis den allerede eksisterer i destinasjonsmappen.
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, og Docs eksisterer. Hvis de ikke gjør det, vil createIfNot-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 i Imgs.
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 med Imgs og Auds.
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, og Docs til sine respektive mapper ved å bruke move-funksjonen.

Sammendrag

Dette skriptet er designet for å organisere filer i en mappe basert på deres filtyper. Det gjør dette ved å:

  1. Sjekke om mapper for bilder, lydfiler, videoer og dokumenter eksisterer, og opprette dem hvis de ikke gjør det.
  2. 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

  1. Shebang (#!/bin/bash): Forteller systemet at skriptet skal kjøres med bash.

  2. Funksjonen createIfNot:

    • Sjekker om en mappe eksisterer ved hjelp av -d-flagget.
    • Hvis mappen ikke eksisterer (! -d), opprettes den med mkdir.
  3. 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.
  4. Variabelen files:

    • Bruker *-jokertegnet til å liste opp alle filer og mapper i gjeldende katalog.
  5. Oppretter nødvendige mapper:

    • Funksjonen createIfNot brukes til å sikre at mappene Images, Audios, Videos, og Docs eksisterer.
  6. Arrays som holder filtyper:

    • Definerer lister over filendelser for forskjellige typer filer (bilder, lydfiler, videoer, dokumenter).
  7. 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.
  8. Flytt filer til riktig mappe:

    • Kaller move-funksjonen med riktig mappe og filene som skal flyttes.

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

  1. Funksjonen Create-IfNot:

    • Bruker Test-Path til å sjekke om en mappe eksisterer.
    • Hvis mappen ikke eksisterer, opprettes den med New-Item.
  2. Funksjonen Move-Files:

    • Flytter filer til en bestemt mappe ved hjelp av Move-Item.
  3. Variabelen $files:

    • Bruker Get-ChildItem -File til å liste opp alle filer i gjeldende katalog.
  4. Oppretter nødvendige mapper:

    • Create-IfNot-funksjonen sikrer at mappene Images, Audios, Videos, og Docs eksisterer.
  5. Arrays som holder filtyper:

    • Lister over filendelser for forskjellige typer filer (bilder, lydfiler, videoer, dokumenter).
  6. Funksjonen Find-Files:

    • Bruker Where-Object til å filtrere filene som samsvarer med de spesifiserte endelsene.
  7. Flytt filer til riktig mappe:

    • Kaller Move-Files-funksjonen med riktig mappe og de samsvarende filene.

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.