Fehlermeldung bei count nach Umstellung auf Python 3.2

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pynomos
User
Beiträge: 10
Registriert: Freitag 1. April 2011, 08:49

Moin,

ich bin mit meinem (kleinen) Latein am Ende und finde den Fehler nicht, warum das Script in 2.7 läuft und in 3.2 nicht...

in der Zeile "33" mit n1 = string.count(rdir,os.sep) kommt die Meldung Objekt hätte Eigenschaft count nicht...??

Hat jemand eine Idee??

Code: Alles auswählen

# Pfade ersetzen #

import sys,os,string


def replace(rdir):
	for entry in os.listdir(os.curdir):
		if os.path.isdir(entry):						# directory; recursive call #
			os.chdir(entry)
			replace(os.pardir+os.sep+rdir)
			os.chdir(os.pardir)
		if os.path.isfile(entry):						# file; process it... #
			ext = os.path.splitext(entry)[1]
			if ext == '.htm' or ext == '.html':         # ...if HTML source #
				nm = entry + ".bak"
				if len(sys.argv) > 1:
					if sys.argv[1] == "-b":
						try:
							os.rename(entry,nm)			# backup file #
						except WindowsError:			# backup file already exists #
							pass
						fin = open(nm,'r')
					else:
						fin = open(entry,'r')
				else:
					fin = open(entry,'r')
				lines = fin.readlines()					# read file #
				fin.close()
				fout = open(entry,'w')
				for line in lines:
					c = os.getcwd().split(os.sep)		# construct absolute path #
					#print(rdir,os.sep)
					n1 = string.count(rdir,os.sep)
					n2 = len(c) - n1 + 1
					cdir = os.sep
					for i in range(n2,len(c)):
						cdir = os.path.join(cdir,c[i])
					cdir = os.path.join(cdir,entry)		# --> add file name <-- #
					line = string.replace(line,"$LOOK_UP$",rdir)
					line = string.replace(line,"$LOOK_HERE$",cdir)
					fout.write(line)
				fout.close()




if __name__ == '__main__':
        print("Start...")
        replace("")
        print("OK.\n")
Zuletzt geändert von Anonymous am Donnerstag 19. Mai 2011, 08:37, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das hat das Modul ja auch nicht: http://docs.python.org/py3k/library/string.html

Die Funktionen des Moduls, die auch als String/Unicode Methoden vorliegen, waren schon lange deprecated, benutz also die Methoden.

Genauso solltest du dir `with` anschauen.
pynomos
User
Beiträge: 10
Registriert: Freitag 1. April 2011, 08:49

schonmal dank für die Infos...

gibt es sowas wie
"hattesete das -> nimm nun dieses"?

... mit was ermittelt man den in 3.2 die Länge eines Strings?
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

pynomos hat geschrieben:... mit was ermittelt man den in 3.2 die Länge eines Strings?
So wie vorher auch. Mit len().
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

pynomos hat geschrieben:gibt es sowas wie
"hattesete das -> nimm nun dieses"?
Für alles andere:

Code: Alles auswählen

string.foo(bar, baz)
=>

Code: Alles auswählen

bar.foo(baz)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

pynomos hat geschrieben:gibt es sowas wie
"hattesete das -> nimm nun dieses"?
Schau' Dir mal das hier an. Ob es eine Übersicht, so wie Du Dir das vorstellst, gibt, glaube ich eher nicht...

Jedenfalls findest Du hier Python 3 string-Methoden. Auch die count-Funktion aus dem string-Modul wirst Du hier wieder finden.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
pynomos
User
Beiträge: 10
Registriert: Freitag 1. April 2011, 08:49

/me hat geschrieben:
pynomos hat geschrieben:... mit was ermittelt man den in 3.2 die Länge eines Strings?
So wie vorher auch. Mit len().
... quatsch - ich meinte wie oft ein Substring in einem String auftaucht...

@mutella: hää in 3.2 ist das count noch da??

irgendwie stehe ich aufm Schlauch
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

pynomos hat geschrieben:hää in 3.2 ist das count noch da??
Jepp. Allerdings nicht mehr als Funktion sondern als string-Methode.
Sagte das nicht cofi bereits...?

Lies Dir doch einfach mal die Links, die ich Dir geschickt haben. Danach bist Du schlauer...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Falls es noch nicht deutlich genug war: auch in Python 2 ist das ``string``-Modul deprecated und man soll die String-Methoden nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
pynomos
User
Beiträge: 10
Registriert: Freitag 1. April 2011, 08:49

ahh... o.k.!!!

ich habs kapiert - Danke für die "Nach-Hilfe"
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Das hier habe ich in dem Zusammenhang gerade gefunden. Auch die anderen Kapitel in dem Buch finde ich gut gemacht...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
pynomos
User
Beiträge: 10
Registriert: Freitag 1. April 2011, 08:49

Danke!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Hier noch eine PDF als Übersicht: http://dl.dropbox.com/u/24756937/python2python3.pdf (keine Ahnung, wo ich die mal gefunden hab)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das ist sogar im PDF verlinkt: http://www.qtrac.eu/py3book.html

http://ptgmedia.pearsoncmg.com/imprint_ ... ython3.pdf

Fand ich auch sehr hilfreich.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@derdon
Das ist wirklich mal schön kompakt :D

Allerdings muss da sowas "use True and False rather than 1 and 0" als Unterschied zwischen Python2.x und 3.1 aufgezählt werden? :|
Wer sucht findet noch mehr :)
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ja, natürlich sollte man (wie bei allem) nicht einfach alles so ohne Skeptik und Zweifel übernehmen.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja, es steht unter der Spalte Idoms, insofern soll es wohl eher darauf hinweisen das man auch gleich True schreiben kann, unabhängig von der Python Version - auch wenn das sehr merkwürdig eingeteilt ist. :roll:
Aber abgesehen davon, das mit dem "super"* will mir nicht in den Kopf sollte man das wirklich so nutzen - egal in welcher Python Version ?

*

Code: Alles auswählen

class B(A):
    def __init__(self):
        super().__init__()
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ja: http://docs.python.org/py3k/library/fun ... html#super

Die Syntax in Python2 war etwas gewoehnungsbeduerftiger.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ok, danke für den Hinweis.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten