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.