5. Filer

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
Versionen från 26 juni 2007 kl. 09.54 (redigera)
KTH.SE:u1ndpe5c (Diskussion | bidrag)

← Gå till föregående ändring
Versionen från 27 juni 2007 kl. 14.39 (redigera) (ogör)
KTH.SE:u1ndpe5c (Diskussion | bidrag)

Gå till nästa ändring →
Rad 223: Rad 223:
[[Bild:795539.jpg]] [[Bild:795539.jpg]]
-==Slutprov 5==+==Prov==
 + 
 +TODO

Versionen från 27 juni 2007 kl. 14.39

Innehåll

Filer

Information som man vill ha kvar på en dator sparas på fil. Det kan t ex röra sig om ett brev som har skapats med hjälp av ett ordbehandlingsprogram, en bild som har skapats av ett ritningsprogram eller en kamera osv. Filer sparas på långtidsminnen som t ex datorns skivminne (hårddisken). När man sparat en fil på hårddisken kommer filen att finnas kvar där även när man har startat om datorn eller t ex när det blir strömavbrott. Därför är det bra att spara den programkod man skriver på en fil för senare bearbetning. Dels för att det sällan blir rätt första gången, dels för att när man väl provkört kommer man på fler saker man önskar av programmet.

Filer delas upp i tre sorter:

  1. Vanliga filer: som innehåller data (t ex text eller bildinformation).
  2. Katalog eller mapp: som innehåller andra filer.
  3. Länkar, genvägar eller alias: En fil som refererar till en fil.

Kataloger används för att organisera filer och program. Kataloger kan innehålla andra kataloger. T ex kan man spara alla filer som har skapats i samband med sommarkursen under katalogen ”sommarkurs”. Strukturen kallas i datorsammanhang ofta för ett filträd.

Länkar används t ex för att man ska kunna hitta samma fil på flera ställen. En bildfil kan ta stor plats och en populär bild kan man vilja ha med på många ställen. För att slippa kopiera bilden lägger man då istället länkar till den. Länkarna tar nästan ingen plats alls.

Filhantering

På nästan alla datorer finns det ett grafiskt användargränssnitt (det du ser på skärmen) som kan användas för att organisera filer mha musen, kortkommandon eller ett filhanteringsprogram.

Filer, kataloger och länkar har då grafiska symboler som kallas för ikoner. Följande bilder visar hur olika ikoner ser ut i ett Mac/OS X operativsystem:

Bild:800176.jpg Bild:800177.jpg Bild:800178.jpg

I programmeringssammanhang är det väldigt vanligt att använda tangentbordskommandon för filhanteringen, t ex för att utföra:

  1. Förflyttning i filträdet.
  2. Kopiering av filer.
  3. Radering av filer.

Ofta är den grafiska filhanteringen enklare, men i programmeringssammanhang vill man använda tangentbordskommandon så mycket som möjligt eftersom det går snabbare (när man väl kan det).

Förflyttning i filträd

Tangentbordskommandon använder man i ett terminalfönster. För att öppna ett terminalfönster på en Windowsdator: tryck först på windows-tangenten, håll den nere och tryck därefter på R. I det fönster som öppnas, skriv in CMD och tryck retur. Har du Macintosh OS X kan du se Python-tolk-instruktionerna i avsnitt 1.9 om villkor om du glömt hur man öppnar ett sådant. Vi börjar med kommandot cd (som står för change directory - byt katalog) används för att förflytta sig i filträdet.

Antag att man befinner sig i katalogen "sommarkurs" och man vet att i katalogen finns en annan katalog med namnet "test". Då kan man skriva följande kommando för att flytta sig till katalogen "test":


Terminalfönster
>cd test


Det finns två speciella namn "." och ".." som har stor betydelse för systemet.

"." betyder aktuella katalogen.

".." betyder katalogen som innehåller aktuella katalogen (dvs katalogen ovanför den aktuella katalogen).

"." och ".." kommer att automatiskt finnas i varje katalog.

Vad begreppet "aktuell katalog" betyder brukar framgå efter ett tags användning, men en analogi är rum i ett hus. Om du går in i ett rum, t ex ditt sovrum så är sovrummet det aktuella rummet. Räknar du upp alla möbler där, så får du ett annat resultat än om du räknar upp möblerna i t ex köket. En nivå upp (katalogen ovanför) kan du jämställa med huset (om du tänkte på en villa) eller lägenheten. En nivå ner (en katalog i rummet) skulle kunna motsvaras av en garderob. I en dator finns det inga begränsningar på antalet nivåer man kan ha, men det gör det förstås i verkligheten.

I samband med kommandot "cd" förekommer ofta två andra viktiga kommandon "ls" och "pwd". Kommandot "ls" (som står för list, lista) eller "dir" i dos används för att lista vilka filer finns i katalogen och "pwd" (som står för print working directory, skriv aktuellt katalognamn) (motsvarande pwd finns inte i dos, istället skrivs katalognamnet alltid ut) används för att ta reda på namn på den aktuella katalogen. Betrakta följande bild:

Bild:795530.jpg

I fortsättningen visas användarens inmatning i fet stil, resten av texten skrivs av datorn. När den aktuella katalogen är sommarkurs och man skriver följande kommandon i tur och ordning får man dessa svar av datorn:

Unix/Mac OS X
>pwd
sommarkurs
>ls
programkod test
>cd programkod
>pwd
sommarkurs/programkod
>ls
Prog.py Prog2.py
>cd Prog.py
Prog.py: Not a directory
>cd ..
>pwd
sommarkurs
>cd test/Katalog1
>pwd
sommarkurs/test/katalog1
> 
DOS
C:\sommarkurs>dir
06-05-01 11.45 <DIR> programkod 
06-05-02 20:23 <DIR> test
C:\sommarkurs>cd programkod 
C:\sommarkurs\programkod> dir 
06-06-01 <DIR> . 
06-06-01 <DIR> .. 
06-06-02 10.45 1024 PROG.PY 
06-05-11 11.11 2048 PROG2.PY 
C:\sommarkurs\programkod> cd prog.py
The directory name is invalid
C:\sommarkurs\programkod> cd ..
C:\sommarkurs> cd test/Katalog1
C:\sommarkurs\test\Katalog1>


[FRÅGOR]

Kopiera filer

Kommandot cp (som står för copy, kopiera) eller copy i DOS används för att kopiera filer. Anta att aktuella katalogen är sommarkurs och vi vill kopiera filen Prog.py som finns i katalogen sommarkurs/programkod till katalogen Katalog1.

Efter kopieringen kommer vi att få följande filstruktur:

Bild:795531.jpg

Unix/Mac OS X
>pwd
sommarkurs
>cp programkod/Prog.py test/Katalog1/
>
DOS
C:\sommarkurs>copy programkod\Prog.py test\Katalog1\
C:\sommarkurs>

Första kommandot pwd är för att säkerställa att vi är i rätt katalog, detta kommando är alltså inte nödvändigt om man vet att aktuella katalogen är sommarkurs.
Den andra kommandoraden består av följande tre delar:
Själva kommandot: cp (copy i dos)
Sökvägen till källan (dvs den fil man vill kopiera)
Sökvägen till destinationen (dvs den katalog man vill kopiera filen till)

Om man vill kopiera en hel katalog med alla filer den innehåller måste man även ange flaggan r , (i dos finns ett eget kommando för detta xcopy med flaggan /s får man nästan samma effekt). Anta att vi vill kopiera hela katalogen test med alla filer som finns i den till programkod. Detta gör vi med följande kommando om den aktuella katalogen är sommarkurs:

Unix/Mac OS X
cp -r test programkod
DOS
C:\sommarkurs>xcopy /s test programkod

Efter kopieringen får vi följande struktur:


Bild:795532.jpg


[FRÅGOR]

Radera filer

Varning: Det finns en viktig skillnad mellan terminalfönsterbaserad filhantering och grafisk filhantering när det gäller borttagning av filer. När man tar bort en fil med hjälp av den grafiska filhanteraren kommer filen hamna i en speciell katalog som brukar kallas för papperskorg, alltså filen är inte riktigt borttagen från datorn (vill man ta bort filen så måste man tömma papperskorgen). När man använder terminalfönsterbaserad filhantering försvinner alla filer som tas bort för gott. Därför ska man vara väldigt försiktig när man ta bort filer i terminalfönstret.

rm (som står för remove) eller del i DOS är kommandot som används för att ta bort filer. Anta att aktuella katalogen är sommarkurs och man vill ta bort filen Prog2.py. Följande kommando tar bort filen Prog2.py:

Unix/Mac OS X
>rm programkod/Prog2.py
>
DOS
C:\sommarkurs>del programkod\prog2.py
C:\sommarkurs>

Så här kommer filstrukturen se ut efter borttagningen:


Bild:795533.jpg

Om man vill ta bort en hel katalog med alla filer i ska man i UNIX-baserade operativystem återge flaggan r till kommandot rm.

I Windows är det däremot annorlunda - kommandot del som vi använde oss av ovan fungerar bara på filer, inte mappar. Istället är kommandot rmdir det som gäller. Om mappen inte är tom måste man även ange flaggan S.

Antag att den aktuella katalogen är sommarkurs och man vill ta bort katalogen test som finns under katalogen programkod med följande kommando:

Unix/Mac OS X
>rm -r programkod/test
>
DOS
C:\sommarkurs>rmdir /S programkod\test
C:\sommarkurs>

Bilden nedan visar filstrukturen efter borttagning:

Bild:795534.jpg

[FRÅGOR]

Flytta filer

Om man vill flytta en fil från en katalog till en annan katalog kan man använda sig av kommandot mv (som står för move) eller move i DOS. Anta nu att den aktuella katalogen är sommarkurs och man vill flytta filen prog.py från katalogen programkod till katalogen test. Detta görs med hjälp av följande kommandorad:

Unix/Mac OS X
>mv programkod/Prog.py test/
>
DOS
C:\sommarkurs>move programkod\prog.py test
C:\sommarkurs>

Ovanstående kommando består av tre följande delar:

  1. Själva kommandot: mv
  2. Hela sökvägen till källan: programkod/prog.py
  3. Hela sökvägen till destinationen: test/

Så här ser fil-strukturen ut:

Bild:795536.jpg

Observera att om man försöker flytta en fil till en plats där det redan finns en fil med samma namn så kommer kommandot mv skriva över filen som finns i destinationen. Man får bekräfta eller makulera kommandot genom att svara på en fråga när det är DOS men i Unix/Mac OS X kommer att filen skrivas över utan några varningar. T ex om man kör följande kommando:

Unix/Mac OS X
>mv test/prog.py test/Katalog1/
>
DOS
C:\sommarkurs>move test\>Prog.py test\Katalog1\

Overwrite C:\sommarkurs\test\Katalog1\Prog.py? (Yes/No/All): Yes

C:\sommarkurs>

Bild:795537.jpg

Då kommer filen test/Katalog1/prog.py ersättas med filen test/prog.py

Man kan också använda kommandot mv för att byta namn på en fil. Anta att man vill byta namn på filen prog.py som finns under katalogen test/Katalog1 till prog3.py, följande kommando gör detta om aktuella katalogen är sommarkurs:

Unix/Mac OS X
>mv test/Katalog1/prog.py test/Katalog1/prog3.py
> 
DOS
C:\sommarkurs>move test/Katalog1/prog.py test/Katalog1/prog3.py 
C:\sommarkurs>

Bild:795538.jpg

[FRÅGOR]

Skapa kataloger

Om man vill skapa nya kataloger kan man använda sig av kommandot mkdir (som står för make directory, skapa katalog).

Anta att aktuella katalogen är sommarkurs och man vill skapa en katalog med namnet lab1 i katalogen programkod, följande kommando gör detta:

Unix/Mac OS X
>mkdir programkod/lab1
>
DOS
C:\sommarkurs> mkdir programkod\lab1
C:\sommarkurs>

Hade aktuella katalogen varit programkod så hade följande kommando skapat katalogen lab1:

Unix/Mac OS X
>mkdir lab1
>
DOS
C:\sommarkurs\programkod>mkdir lab1
C:\sommarkurs\programkod>

så här ser filstrukturen ut efter skapandet av katalogen lab1:

Bild:795539.jpg

Prov

TODO

Personliga verktyg