Seite 1 von 1

MP3s kopieren!

Verfasst: Donnerstag 15. Juni 2006, 12:48
von Vos
Hi leute ich hab mal ein kleines programm geschrieben!! HIer erst mal das program dan zum problem!

Code: Alles auswählen

from Tkinter import*
import os


class Hauptfenster:
	def Fenster(self):
		top = Tk()
		top.wm_geometry("400x200")
		top.title("MP3 Kopierer")

		F = Frame(top)
		F.pack(expand="true")

		lText = Label(F, text="Bitte in das erste Feld den Pfad und ins zweite den Dateinamen\n")
		lText.pack(side="top", expand="true")

		fEntry = Frame(F, border="1")
		ePfad = Entry(fEntry, width=40)
		ePfad.insert(0,"C:\Musik")
		ePfad.pack(side="left", expand="true")
		eDateiname = Entry(fEntry, width=20)
		eDateiname.pack(side="left", expand="true")
		fEntry.pack(side="top", expand="true")
		
		fEntry = Frame(F, border="1")
		lText1 = Label(F, text="Hier bitte das Laufwerk angeben auf welches die Datei\n gespeicehrt werden soll. Bai bedarf auch den Pfad\n")
		lText1.pack(side="top", expand="true")
		
		eLaufwerk = Entry(fEntry, width=20)
		eLaufwerk.pack(side="top", expand="true")
		fEntry.pack(side="top", expand="true")
		
		def evKopieren():
			gDateiname = eDateiname.get()
			gPfad = ePfad.get()
			gLaufwerk = eLaufwerk.get()
			
			inp = open(gPfad+gDateiname,"r")
			outp = open(gLaufwerk+gDateiname,"w")
			for line in inp.readlines():
			    outp.write(line)
			inp.close()
			outp.close()
			
		fButtons = Frame(F, border=1)
		bKopieren = Button(fButtons, text="Kopieren",width=10, height=1, command=evKopieren)
		bKopieren.pack(side="left", padx=6, pady=6)
		fButtons.pack(side="top", expand="true")

		F.mainloop()

oeffnenH = Hauptfenster()
oeffnenH.Fenster()
So das is es! Es funktioniert 100%! Bis auf das man noch keine MP3 Damit kopirenen kan! den wenn man die kopierte MP3 Datei dan abspielen möchte kommt eine fehlermeldung!

Vieleicht weiß jemand rat?
Auserdem hat jemand noch ne idee wie ich es erweitern könnte?
Ich wollte noch eine Pfad speicher Basteln den jedesmal den selber Pfad eingeben is öde und einen Butten der sofort den Pfad zu Eigene Musik in WIN XP reinschreibt!

Na ja!

Danke schonmal für antworten

Tschö

Vos

>Edit ich sehe gerad das dort noch steht print "1 File kopiert..." das war nur zu testzwecken kan nun weg!

und weg!

Verfasst: Donnerstag 15. Juni 2006, 12:57
von pr0stAta
Um eine Datei zu kopieren solltest du dir mal
das Shutil Modul angucken
http://docs.python.org/lib/module-shutil.html

Re: MP3s kopieren!

Verfasst: Donnerstag 15. Juni 2006, 13:52
von gerold
Vos hat geschrieben:

Code: Alles auswählen

		def evKopieren():
			gDateiname = eDateiname.get()
			gPfad = ePfad.get()
			gLaufwerk = eLaufwerk.get()
			
			inp = open(gPfad+gDateiname,"r")
			outp = open(gLaufwerk+gDateiname,"w")
			for line in inp.readlines():
			    outp.write(line)
			inp.close()
			outp.close()
Es funktioniert 100%! Bis auf das man noch keine MP3 Damit kopirenen kan!
Hi Vos!

Wie pr0stAta bereits schrieb, ist das Modul shutil genau das Richtige für dich. Allerdings möchte ich auch aufzeigen, warum es mit deinem Code nicht funktioniert.

Nur Textdateien kannst du öffnen und zeilenweise auslesen. Nur Textdateien kannst du zeilenweise schreiben.

Du öffnest beide Dateien wie eine Textdatei ("r" und "w"). Binärdateien solltest du mit "rb" und "wb" öffnen, damit Python sich nicht in die Verwaltung der Zeilenumbrüche einmischt.

Da es bei Binärdateien keine Zeilen gibt, sollest du nicht mir "readline()" sondern mit "read()" arbeiten. Nicht "writelines()" sondern "write()".

So sollte es funktionieren:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys

SOURCE = "/home/gerold/Desktop/UB40 - Kingston Town.mp3"
DESTINATION = "/home/gerold/Desktop/UB40 - Kingston Town2.mp3"

f_source = file(SOURCE, "rb")
f_dest = file(DESTINATION, "wb")

try:
    print "Starte Kopiervorgang"
    for data_piece in iter(lambda: f_source.read(102400), ""):
        f_dest.write(data_piece)
        sys.stdout.write(".")
finally:
    f_dest.close()
    f_source.close()

print "\nKopiervorgang abgeschlossen"
mfg
Gerold
:-)

Verfasst: Donnerstag 15. Juni 2006, 14:06
von gerold
So ist es vielleicht etwas verständlicher:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys

SOURCE = "/home/gerold/Desktop/UB40 - Kingston Town.mp3"
DESTINATION = "/home/gerold/Desktop/UB40 - Kingston Town2.mp3"

f_source = file(SOURCE, "rb")
f_dest = file(DESTINATION, "wb")

try:
    print "Starte Kopiervorgang"
    while True:
        data_piece = f_source.read(102400)
        if data_piece:
            f_dest.write(data_piece)
            sys.stdout.write(".")
        else:
            break
finally:
    f_dest.close()
    f_source.close()

print "\nKopiervorgang abgeschlossen"
mfg
Gerold
:-)

Verfasst: Donnerstag 15. Juni 2006, 17:28
von Vos
@pr0stAta: Jo dies hatte ich schon im Forum gefunden... Leider ist mein englisch nicht sehr gut man kann zwar übersetzten aber es klappte nicht so wirklich!

@Gerold: Danke schon mal ich probier deins aus!Wenn deins nicht funktionieren sollte (tuts eigenldich immer) dan werde ich mich mal mit "Shutil" ausanderesetzen!

Grüße und danke nochmal!

EDIT:

Also

Code: Alles auswählen

write(line)
Muss stehen bleiben, sonst kommt fehlmeldung! Sonst gehts nich aber dan funst es 100%! Nochmal danke das progi stell ich dan späte bei Codesnips rein!

Grüß

Grüße

Verfasst: Donnerstag 15. Juni 2006, 18:27
von BlackJack
Vos hat geschrieben:@pr0stAta: Jo dies hatte ich schon im Forum gefunden... Leider ist mein englisch nicht sehr gut man kann zwar übersetzten aber es klappte nicht so wirklich!

Code: Alles auswählen

import shutil
shutil.copyfile('ich_bin_ein_mp3.mp3', 'ich_bin_die_kopie.mp3')
Das war's schon.