Feynman Skrevet 20. august 2009 Del Skrevet 20. august 2009 Hei, Holder på med å lage et Python-skript (og kanskje program senere) som leser gjennom et filtre og søker etter data i tekstfiler. Noen som har gjort det tidligere? Har bladd litt i Python Essential Reference, men har ikke funnet helt hva jeg er ute etter. Har programmert en del, men er litt fersk i Python. Har fått med meg at man kan få veldig bra kode om man bruker de rette funksjonene. Så også etter systemfunksjoner som virker i Python-skall. Fins det noe tilsvarende som cd, ls, cat, osv. hvis man vil prøve seg fram? Lenke til kommentar
terjeelde Skrevet 20. august 2009 Del Skrevet 20. august 2009 Så også etter systemfunksjoner som virker i Python-skall. Fins det noe tilsvarende som cd, ls, cat, osv. hvis man vil prøve seg fram? Mistenker du vil ha OS-modulen: http://docs.python.org/library/os.html Se spesielt på os.walk, som lar deg iterere over ting. Lenke til kommentar
Feynman Skrevet 20. august 2009 Forfatter Del Skrevet 20. august 2009 OS modulen ser ut til å ha det jeg trenger til å lete gjennom filer. listdir() var heller ikke så dum da deler av filstrukturen er kjent. Har en del å leke med nå fremover. Lenke til kommentar
Feynman Skrevet 28. august 2009 Forfatter Del Skrevet 28. august 2009 (endret) Da går det greit å lese filer. Fins det noen gode måter å samle info fra dem? Går på mønstergjenkjenning. projectfile = open(fullpath) for line in projectfile.readlines(): if line.startswith('File'): # Hver linje som starter med 'File' definerer # en C-fil i prosjektet. Jeg vil ha navnet # Eks: File 1,1,<.\main.c><main.c> startswith er OK har da filen er generert, men jeg bruker endswith på filendelser. Finnes det noe bedre for Windows da det ikke er case-sens? Eller er det å sette til lower case først som er trikset? Endret 28. august 2009 av Feynman Lenke til kommentar
zotbar1234 Skrevet 29. august 2009 Del Skrevet 29. august 2009 Da går det greit å lese filer. Fins det noen gode måter å samle info fra dem? Går på mønstergjenkjenning. Mao du trenger en funksjon som trekker alle filnavn ut av en fil, og så vil du anvende denne funksjonen på en sekvens med filer. Omtrent slik, kanskje: def extract_files(fname): """Extract all filenames out of L{fname}. Extract all file namees from lines starting with 'File'. Each interesting line is formatted thus: File [number],[number],[path] @type fname: basestring @param fname: Filename with data to process @rtype: list (of basestring) @return: A list (without duplicates) with file names extracted from L{fname}. """ marker = "File" result = set() for line in open(fname): if not line.startswith(marker): continue path = line.split(",")[-1].strip() basename = os.path.basename(path) name = os.path.splitext(basename)[0] result.add(name) return list(result) # end extract_files def fetch_all_files(dirname): """Fetch all project files listed in files in dirname. """ reduce(lambda seq1, seq2: seq1 + seq2, [extract_files(x) for x in os.listdir(dirname) if os.path.isfile(x)]) # end fetch_all_files (Koden er utestet). Uttrekk av filnavnet er nokså simplistisk, men det er vanskelig å gi en oppskrift uten en skikkelig beskrivelse av formatet. Mao. - "left as an exercise for the reader". startswith er OK har da filen er generert, men jeg bruker endswith på filendelser. Finnes det noe bedre for Windows da det ikke er case-sens? Eller er det å sette til lower case først som er trikset? "Windows er ikke case-sens"? Eh? Uansett, hvis input kan forekommer i flere varianter, er nok det lureste å velge *en* intern representasjon og sørge for at *alt* blir konvertert til denne interne representasjonen ved innlesing. Mao. små bokstaver, hvis det er nødvendig (overgang store -> små bokstaver er litt kjipe i det generelle tilfellet, men kanskje det er tilstrekkelig med noe enkelt her). Lenke til kommentar
Xecuter Skrevet 10. september 2009 Del Skrevet 10. september 2009 re! Nå har du to problem. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå