brevig Skrevet 31. juli 2006 Del Skrevet 31. juli 2006 Hei. Jeg holder på å skrive et skript som finner alle mine mp3-filer og gjør om informasjonen til HTML og skriver denne til en fil. #!/usr/bin/python # -*- coding: UTF-8 -*- # Filename: htmllib.py # Importing modules import os # Setting start of the HTML document start = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML> <HEAD> <TITLE>HTML Library</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF> <TABLE>''' # Setting main of the HTML document main = '\n' # Setting end of the HTML document end = '''</TABLE> </BODY> </HTML>''' # Finds all .mp3-files in searchdir searchdir = '/Users/oleb/Music/iTunes' musicdir = (os.listdir(searchdir)) for artist in musicdir: if '.' in artist: pass else: artistfolder = '/Users/oleb/Music/iTunes/' + artist try: artistdir = os.listdir(artistfolder) except OSError: pass for album in artistdir: if '.' in album: pass else: albumfolder = '/Users/oleb/Music/iTunes/' + artist + os.sep + album try: albumdir = os.listdir(albumfolder) except OSError: pass for file in albumdir: if '.mp3' in file: fileloc = albumfolder + os.sep + file #print fileloc add2link = fileloc[12:] filename = os.path.split(add2link)[1] folderraw = os.path.split(add2link)[0][13:] folderbetter = folderraw.replace('/', ' - ') main = main + '''<TR><TD>%s: </TD><TD><A HREF="../../%s">%s</A></TD></TR>\n''' % (folder, add2link, filename) else: pass # Adds together the various HTML parts and writes them to a file html = start + main + end # Writes the html to the file index.html f = file('index.html', 'w') f.write(html) f.close() Koden fungerer fint til # Writes the html to the file index.html Jeg får følgende error. Traceback (most recent call last): File "htmllib.py", line 70, in ? f = file('index.html', 'w') TypeError: 'str' object is not callable Jeg har prøvd å la det skrive test = 'gibberish' isteden, men allikevel får jeg samme error. Jeg kan printe html og den er helt perfekt. Hvis jeg fjerner hele avsnittet # Finds all .mp3-files in searchdir fungerer det fint. Jeg lurer dermed på hvorfor dette ikke fungerer, og hva jeg kan gjøre for å fikse det? Lenke til kommentar
dabear Skrevet 31. juli 2006 Del Skrevet 31. juli 2006 (endret) file er en funksjon til å åpne filer, men du kan overskrive den ved å kjøre file = noeannet. Noe liknende gjør du i loopen din: for file in albumdir: Du må altså skifte file her til noe annet, eventuelt kan du bruke synonymet open. En siste (og ikke foretrukket måte) er å importere __builtin__ og kalle __builtin__.file edit: Forøvrig kan du sjekke om variabel X slutter på eller begynner på noe ved bruk av dette (dersom X er string): if X.endswith('.mp3'): #slutter på .mp3 pass if X.startswith('TeamLudvigsen'): #begynner på 'TeamLudvigsen' pass Endret 31. juli 2006 av dabear Lenke til kommentar
brevig Skrevet 31. juli 2006 Forfatter Del Skrevet 31. juli 2006 Tusen takk for hurtig og godt svar! Jeg var vel egentlig klar over startswith, så burde tenkt meg til endswith selv. Er min fremgangsmåte for å finne filer i en mappe "vanlig"? Lenke til kommentar
dabear Skrevet 31. juli 2006 Del Skrevet 31. juli 2006 (endret) Tja, så lenge du lærer på det Jeg ville kanskje brukt os.walk, os.path.basename, os.path.join og deretter separere html fra python, ved å lage alle nødvendige lister og deretter kjøre en for-loop, list-comprehension eller filter() I tillegg kan os.path.expanduser være å foretrekke. NB! finn en bedre editor, og bruk 4 mellomrom til indentering! Koden din ser ikke ut her på linuxboksen min Om du bruker tekst-editoren innebygd i OS X, er jeg sikker på at denne òg kan stilles inn Endret 31. juli 2006 av dabear Lenke til kommentar
brevig Skrevet 1. august 2006 Forfatter Del Skrevet 1. august 2006 Ok. Regner med jeg kan bruke mer avanserte os-funksjoner etterhvert. Angåedne teksteditoren, så skal den være grei den, men er mulig jeg har stilt den litt feil. Jeg bruker tab til indentering. Har forandret noen instillinger nå -- ser dette bedre ut? if x != 0: if y > x: if z > x: print x, y, z, 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å