Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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 av dabear
Lenke til kommentar

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 :p

 

Om du bruker tekst-editoren innebygd i OS X, er jeg sikker på at denne òg kan stilles inn ;)

Endret av dabear
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...