Moi. Haluaisin tehdä pienen ohjelman jolle syötetään kansio, ja se tulostaa kaikkien tiedostojen nimet kansiosta ja alikansioista tiedostoon.
En osaa pythonia YHTÄÄN jos totta puhutaan. Ajattelin tehdä C++:lla mutta sillä on kaikki aina niin s***anan monimutkasta niin päätin kokeilla jotain toista kieltä, ja kappas kappas sehän oli äärimmäisen yksinkertaista. Tällaisen sain pienellä googletuksella ja tutoriaalin kahluulla aikaan:
import os print 'The Ultimate Tiedoston Nimi Listaaja' print 'Anna listattavan kansion polku muodossa esim C:/kansio' print 'Tiedosto LISTAUS.txt tallentuu siihen hakemistoon,' print 'mista tama ohjelma ajetaan\n\n' polku = str(raw_input("Anna polku: ")) for fileName in os.listdir ( polku ): fileHandle = open ( 'LISTAUS.txt', 'w' ) for fileName in os.listdir (polku): fileHandle.write ( fileName + '\n' ) fileHandle.close() print 'Valmista tuli!'
Toi toimii muuten paitsi se ei hae alikansioista, ainoastaan kirjoittaa alikansion nimen sinne tiedostoon.
Hyvä, mutta avaatko ja suljetko tiedoston tarkoituksella silmukan sisällä?
os.walk tehnee sen mitä haluat:
import os polku = raw_input('Anna polku: ') listatiedosto = open('LISTAUS.txt', 'w') for root, dirs, files in os.walk(polku): # hakemisto kerrallaan, kaikki sen tiedostot: for f in files: listatiedosto.write(os.path.join(root, f) + '\n') listatiedosto.close()
Rekursio ratkaisee tällaiset ongelmat. Vilkaise putkan opasta aiheest: https://www.ohjelmointiputka.net/oppaat/opas.
Edit: Joo, os.path taitaa myös homman hoitaa. Rekursiolla voi sitten toteuttaa vaikka vain harjoituksen vuoksi.
Chiman kirjoitti:
Hyvä, mutta avaatko ja suljetko tiedoston tarkoituksella silmukan sisällä?
os.walk tehnee sen mitä haluat:
import os polku = raw_input('Anna polku: ') listatiedosto = open('LISTAUS.txt', 'w') for root, dirs, files in os.walk(polku): # hakemisto kerrallaan, kaikki sen tiedostot: for f in files: listatiedosto.write(os.path.join(root, f) + '\n') listatiedosto.close()
Joo ei se mikään harkittu teko ollut laittaa silmukan sisään noita tiedoston avaamista ja sulkemista =)
Kiitos, toi toimii kivasti, mutta se tallentaa koko polun, pelkkä tiedoston nimi riittäisi =)
Ok, sitten käytä pelkkää f:ää tuon writen sisällä :)
Noniin, olipas yksinkertaista. Kiitos.
Pitää varmaan alkaa opiskeleen pythonia, mielenkiintoinen kieli.
Aihe on jo aika vanha, joten et voi enää vastata siihen.