Seite 1 von 1

Datein absuchen bzw öffnen

Verfasst: Freitag 22. August 2003, 10:38
von PenPen
Hi ich habe nochmal ne Frage

Ich möchte in meinem Programm mehrere Dateiene öffen die erste heitßt zb. parameter1.csv die darauffolgenden würden dann heißen:
parameter1.1.csv
parameter1.2.csv
...
wie schaffe ich es das das Programm automatisch nach eingabe von 1 nach den anderen Datein sucht und diese ebenfalls bearbeitet und unter einem neuem Namen ebenfalls nach dem Muster 1.1, 1.2, ... wieder abspeichert?

Servus Mark

Verfasst: Freitag 22. August 2003, 10:40
von PenPen
Sorry aber jedesmal mache ich irgendwie was falsch obs jetzt Rechschreibung oder Titel und Benutzername vertauschen ist.

Re: PenPen

Verfasst: Freitag 22. August 2003, 10:49
von Voges
PenPen hat geschrieben:wie schaffe ich es das das Programm automatisch nach eingabe von 1 nach den anderen Datein sucht und diese ebenfalls bearbeitet und unter einem neuem Namen ebenfalls nach dem Muster 1.1, 1.2, ... wieder abspeichert?
Ganz klar ist mir die Abfolge nicht. "1", "1.1", "1.2", ... "1.9" und dann? "1.10" oder "2" oder "2.0"? Und bis wie weit soll gezählt werden?
Jan

Verfasst: Freitag 22. August 2003, 12:32
von Milan
Ich hab deine Entschuldigung mal als Änderungswunsch interpretiert und das zurückvertauscht... Ich weiß auch nicht ganz wie dein System genau sein soll, aber mit os.listdir bekommst du eine Liste aller Deitennamen eines Verzeichnisses. Die müsstest du dann nur noch systematisch abarbeiten und wieder neu speichern.

Verfasst: Freitag 22. August 2003, 12:48
von PenPen
Oki
Hm 1.1 usw ist eventuell doch eher kompliziert
Denke es würde auch reichen wenn ich die datei irgendwas-1.csv nennen würde und dann hochzählen würde.
Das würde dann von 1 bis ca. 200 hochgezählt werden

Verfasst: Freitag 22. August 2003, 13:25
von PenPen
Ich habe mir eigentlich vorgestellt das ich irgendwas-1.csv eingebe und das das Programm dann so lange hcohzählt und die dateien bearbeitet bis die hochzählung zu ihrem Ende angekommen ist und damit die letzte Datei bearbeitet ist.

@Milan Danke für die Änderung

Verfasst: Freitag 22. August 2003, 13:33
von Voges
Hallo!
PenPen hat geschrieben:Hm 1.1 usw ist eventuell doch eher kompliziert
Möglichkeiten gibts viele. Auch das mit dem "1.1" etc. wäre machbar, wenn denn die Regeln klar sind. Bleiben wir mal bei der einfachen Zählung:

Du könntest das Modul glob verwenden.
import glob
dateiliste = glob.glob("/mein/pfad/irgendwas-*.csv")

Dann wären alle Dateien mit "irgendwas-" am Anfang und ".csv" am Ende in der Liste.

Mehr Kontrolle über die zu berücksichtigenden Dateien hättest Du so:

Code: Alles auswählen

import os,re
for datei in os.listdir("/mein/pfad"):
    if re.search("^irgendwas-[0-9]+.csv$",datei):
        pass # Dateiaktionen
Die if-Bedingung kannst Du so komplex wie nötig gestalten.

Nachteil der obigen beiden Lösungen: Die Dateien sind nicht in nummerischer Reihenfolge. Da wäre eine Zählschleife (eventuell mit Abbruchbedingung) vielleicht besser:

Code: Alles auswählen

for i in range(1,200):
    try:
        f = open("/mein/pfad/irgendwas-%d.csv"%(i))
        # Dateiaktionen
        f.close()
    except IOError:
        pass # Datei gibt's dann wohl nicht
Jan

Verfasst: Dienstag 26. August 2003, 08:19
von PenPen
Hallo nochmal
erstmal danke für die Lösungen, ich habe mich für die letzte entschieden. Allerdings habe ich jetzt wieder ein Problem.
Wenn ich das Programm jetzt ausführe gibt es nur die letzte Datei aus, die anderen bearbeitet es entweder nicht oder überschreibt sie.
Hier mal mein Code da ich keine Lösung finde oder den Wald vor lauter Bäumen nicht sehe.

Code: Alles auswählen

Datei = raw_input() # Pfad der zu modiviezierenden Datei eingeben
print "\n"
print "Bitte neuen Dateinamen eingeben "
print ">>>"
neu = raw_input() #Benutzer soll den Pfad der neuen Datei angeben

i = 1

print i
for j in range(1,10): 
    try:
	v = open(Datei + "-%d.csv"  %(j)) 
	# Dateiaktionen 

	import string
	import csv       	

# Die naechsten 2 Blöcke ändern  ' ' zu '_' und ';' zu ' ' und speichern dies. 
        transtable =     string.maketrans(' ','_')
	f = v   #open(Datei, 'r')  
	text = f.read() 
	f.close() 
	text = text.translate(transtable)
	f = open(neu, 'w') 
	f.write(text) 
	f.close()

	v.close() 

	transtable = string.maketrans(';',' ')
	e = open(neu, 'r') 
	text = e.read() 
	e.close() 
	text = text.translate(transtable)
	e = open(neu, 'w+') 
	e.write(text) 
	e.close()
	
	# letzter Block nimmt Untergliederung vor  
	def numworte(s):
	    list = string.split(s)
	    return len(list)# gibt Anzahl der Elemente in einer Liste zurück
	inp = open(neu,"r+")
	line = inp.readline()
	for line in inp.readlines():
	    list = string.split(line)
	    i = 0
	    n = len(list)
	    if i == 0:      
		inp.write('- ')
		inp.write(list[0])
		inp.write('\n')
	    for  i in range (1,n):
		inp.write('   - ') 
		inp.write(list[i]) 
		inp.write('\n')
	inp.close()

	
    except IOError: 
	pass # Datei gibt's dann wohl nicht

	
#Rückumwandlung der "_" in " "
transtable = string.maketrans('_',' ')
t = open(neu, 'r') 
text = t.read() 
t.close() 
text = text.translate(transtable)
t = open(neu, 'w') 
t.write(text) 
t.close()

#Ausgabe der neuen Datei zu Kontrolle 
x = open(neu, 'r') 
print x.read()
x.close()

Verfasst: Dienstag 26. August 2003, 09:00
von Voges
Hallo!
Kannst Du den Code nochmal in [code] [/code] einschließen, damit die Einrückungen erhalten bleiben (und vielleicht auf die Teile beschränken, die für die Fehlersuche wichtig/ausreichend sind)? BTW: Wenn Du registiert wärst, könntest Du Deinen Beitrag nachträglich entsprechend editierten ;-)
Jan

Verfasst: Dienstag 26. August 2003, 10:07
von PenPen
Hat sich erledigt, aber trotzdem Danke
zum Code wie ich ihn vorher gepostet habe ich weis das er zum Teil stumpfsinnig ist usw
Servus Markus