Seite 1 von 1

wie funktioniert include und wie benutze ich es?

Verfasst: Mittwoch 31. Januar 2007, 21:34
von reverse
hallo ihr cracks da....
wie funktioniert include und wie benutze ich es?

beispiel (pymedia)
wie kann ich gebrauch von unterem code machen?

Code: Alles auswählen

#! /bin/env python

def dumpWAV( name ):
	import pymedia.audio.acodec as acodec
	import pymedia.muxer as muxer
	import time, wave, string, os
	name1= str.split( name, '.' )
	name2= string.join( name1[ : len( name1 )- 1 ] )
	# Open demuxer first

	dm= muxer.Demuxer( name1[ -1 ].lower() )
	dec= None
	f= open( name, 'rb' )
	snd= None
	s= " "
	while len( s ):
		s= f.read( 20000 )
		if len( s ):
			frames= dm.parse( s )
			for fr in frames:
				if dec== None:
					# Open decoder

					dec= acodec.Decoder( dm.streams[ 0 ] )
				r= dec.decode( fr[ 1 ] )
				if r and r.data:
					if snd== None:
						snd= wave.open( name2+ '.wav', 'wb' )
						snd.setparams( (r.channels, 2, r.sample_rate, 0, 'NONE','') )
					
					snd.writeframes( r.data )

# ----------------------------------------------------------------------------------

# Save compressed audio file into the WAV file suitable for writing on a regular Audio CD

# http://pymedia.org/

import sys
if len( sys.argv )!= 2:
	print "Usage: dump_wav <filename>"
else:
	dumpWAV( sys.argv[ 1 ] )

mfg
reverse

Re: wie funktioniert include und wie benutze ich es?

Verfasst: Mittwoch 31. Januar 2007, 21:41
von Leonidas
reverse hat geschrieben:wie funktioniert include und wie benutze ich es?
Include gibt esin Python nicht, dazu benutzt man ``import``, sihe [wiki]Import[/wiki].
reverse hat geschrieben:beispiel (pymedia)
wie kann ich gebrauch von unterem code machen?
Ausführen?

Oder willst du es etwa importieren? Kein Problem, wie das geht, steht in der verlinkten Wikiseite.

Verfasst: Donnerstag 1. Februar 2007, 13:53
von reverse
hello Leonidas
danke fürs feedback!!!

wie kann ich klasse importieren und gebrauch davon machen?

die unterem code ist so was wie klasse...richtig????

Code: Alles auswählen

#! /bin/env python

def dumpWAV( name ):
    import pymedia.audio.acodec as acodec
    import pymedia.muxer as muxer
    import time, wave, string, os
    name1= str.split( name, '.' )
    name2= string.join( name1[ : len( name1 )- 1 ] )
    # Open demuxer first

    dm= muxer.Demuxer( name1[ -1 ].lower() )
    dec= None
    f= open( name, 'rb' )
    snd= None
    s= " "
    while len( s ):
        s= f.read( 20000 )
        if len( s ):
            frames= dm.parse( s )
            for fr in frames:
                if dec== None:
                    # Open decoder

                    dec= acodec.Decoder( dm.streams[ 0 ] )
                r= dec.decode( fr[ 1 ] )
                if r and r.data:
                    if snd== None:
                        snd= wave.open( name2+ '.wav', 'wb' )
                        snd.setparams( (r.channels, 2, r.sample_rate, 0, 'NONE','') )
                   
                    snd.writeframes( r.data )

# ----------------------------------------------------------------------------------

# Save compressed audio file into the WAV file suitable for writing on a regular Audio CD

# http://pymedia.org/

import sys
if len( sys.argv )!= 2:
    print "Usage: dump_wav <filename>"
else:
    dumpWAV( sys.argv[ 1 ] )
also speichere ich es unter covnvertWav.py

anwendung

import covnvertWav
fw= wave.open( 'test.wav', 'wb' )
fw.setparams( (r.channels, 2, r.sample_rate, 0, 'NONE','') )
snd.writeframes( r.data )


richtig?????

mfg
reverse

Verfasst: Donnerstag 1. Februar 2007, 14:42
von BlackJack
reverse hat geschrieben:die unterem code ist so was wie klasse...richtig????
Nein das ist eine Funktion. Und zwar eine grauenvoll geschriebene.

Code: Alles auswählen

#! /bin/env python

def dumpWAV( name ):
    import pymedia.audio.acodec as acodec
    import pymedia.muxer as muxer
    import time, wave, string, os
Import-Anweisungen schreiben die meisten Programmierer an den Anfang des Moduls. Dann kann man besser sehen was für Abhängigkeiten bestehen.

Code: Alles auswählen

    name1= str.split( name, '.' )
    name2= string.join( name1[ : len( name1 )- 1 ] )
`split()` und `join()` sind Methoden auf Zeichenketten, die ruft man normalerweise nicht von der Klasse oder dem `string`-Modul aus auf. Ausserdem funktioniert der `join()`-Aufruf so nicht, weil die Funktion zwei Argumente erwartet. Und der Slice liesse sich auch einfacher schreiben.

Code: Alles auswählen

    name1 = name.split('.')
    name2 = '.'.join(name1[:-1])
Das sieht aber eher nach einem Job für `os.path.splitext()` aus.

Der Rest sieht auch sehr wirr aus. Zum Beispiel diese eigenartige Verzögerung von der Erstellung vom `Decoder` und der `wave`-Datei tief in die Schleife(n) hinein ist sehr unübersichtlich. Und die Namen könnten ein wenig länger und aussagekräftiger sein.
speichere ich es unter covnvertWav.py

anwendung

import covnvertWav
fw= wave.open( 'test.wav', 'wb' )
fw.setparams( (r.channels, 2, r.sample_rate, 0, 'NONE','') )
snd.writeframes( r.data )


richtig?????
Anwendung von was? Von der Funktion? Wohl kaum, sie wird ja nirgends aufgerufen.

Arbeite doch bitte erst einmal eine Tutorial durch und lerne die Grundlagen.