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
Datein absuchen bzw öffnen
Re: PenPen
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?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?
Jan
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.
Hallo!
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: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:
Jan
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
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
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.
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()
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder