Seite 1 von 1

'bessere' if-Schleifen

Verfasst: Dienstag 27. März 2012, 11:17
von recnice
Hallo,
ich habe ein Programm geschrieben, dass in einem Ordern ganz bestimmte Dateien sucht.

Code: Alles auswählen

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



#-----------------------------------------------------------------------
T_START 			= 0.0
DELTA_T	                = 0.001
T_END    			= T_START + DELTA_T
CYCLE			= 1
print "-***-"*10


found_files 	= []
all_files 		= os.listdir(os.getcwd())
print all_files

print str(CYCLE)
for file in all_files:
	if file.startswith('pandas'):
		#print file		
		if 'displ' in file:
			#print file			
			if file[-5] == str(CYCLE):
				#print file
				if str(T_END) in file:
					#print file 
					found_files.append(file)

print found_files
print "-***-"*10
In dem Ordner sind die folgenden Dateien:
  • ['pandas_press_bc_4_step_0.001_cycle_2.dat', 'pressure_for_pandas_iter2.dat', 'pandas_displ_u_x_bc_4_step_0.001_cycle_1.dat', 'pandas_displ_u_x_bc_4_step_0.001_cycle_2.dat', 'fct_druck_aenderung_v002.py', 'druck_aenderung.pyc', 'pressure_for_pandas.dat', 'aenderung_druck_verschiebung.py', 'druck_aenderung.py', 'pandas_press_bc_4_step_0.001_cycle_1.dat', 'fct_druck_aenderung.py', 'pressure_for_pandas_iter1.dat', 'pandas_displ_u_y_bc_4_step_0.001_cycle_1.dat', 'pandas_displ_u_y_bc_4_step_0.001_cycle_2.dat']
Und diese sind meine gesuchten Dateien
  • ['pandas_displ_u_x_bc_4_step_0.001_cycle_1.dat', 'pandas_displ_u_y_bc_4_step_0.001_cycle_1.dat']

Das passt soweit :lol:. Die Frage an die Profis is nun : kann man

Code: Alles auswählen

for file in all_files:
	if file.startswith('pandas'):
		#print file		
		if 'displ' in file:
			#print file			
			if file[-5] == str(CYCLE):
				#print file
				if str(T_END) in file:
					#print file 
					found_files.append(file)
diesen Teil "schöner" und/oder effizienter Programmieren ??

Re: 'bessere' if-Schleifen

Verfasst: Dienstag 27. März 2012, 11:35
von Hyperion
Also erst einmal der übliche Link passend zur Überschrift: if-Schleife.

Ansonsten: Schau Dir doch mal die Funktionen / Module `os.walk` und `fnmatch` oder `glob` an. Damit sollte sich Finden von generell passenden Dateien das schon mal vereinfachen und sauberer abbilden lassen.

Da Du ziemlich viele Bedingungen hast, würde ich Dir empfehlen das mit einem regulären Ausdruck zu prüfen. Den kannst Du Dir aus den verschiedenen Anforderungen zusammenbauen. Das wäre sicherlich der effizienteste und zugleich auch übersichtlichste Weg.

Du solltest Deine Einrückungen allesamt durch 4 Spaces ersetzen. Wie Du selber sehen kannst, geht da einiges schief und durcheinander.

Wenn Du Dein Script universell auslegen willst, dann solltest Du die Parameter am besten irgend wie einlesen (Konfig-Datei) oder per Kommandozeilenparameter an Dein Script übergeben. Direkt im Code machte das nur für Default-Werte Sinn - gibt es die überhaupt?

Als letztes: Ist das wirklich so gewollt, dass Datendateien mit anderen vermischt in einem Verzeichnis liegen?

Re: 'bessere' if-Schleifen

Verfasst: Dienstag 27. März 2012, 11:47
von recnice
Also erst einmal der übliche Link passend zur Überschrift: if-Schleife.
:P
Wenn Du Dein Script universell auslegen willst, dann solltest Du die Parameter am besten irgend wie einlesen (Konfig-Datei) oder per Kommandozeilenparameter an Dein Script übergeben. Direkt im Code machte das nur für Default-Werte Sinn - gibt es die überhaupt?
Das was ich gepostet habe, ist sozusagen der "Versuch". Wenn die Idee meines "Versuchs" klappt, wird der Teil in ein meine eigentliche Arbeit eingefügt, dort sind die Parameter nicht mehr so vorhanden wie in diesem Beispiel

Als letztes: Ist das wirklich so gewollt, dass Datendateien mit anderen vermischt in einem Verzeichnis liegen?
Ja, vorerst sind alle Dateien in ein und dem selben Ordern, dies wird sich wohl aber noch ändern....

Danke für die Hinweise,
Gruß

Re: 'bessere' if-Schleifen

Verfasst: Dienstag 27. März 2012, 12:11
von Hyperion
Ich habe mal eine kleine (laufende) Entwurfsskizze erstellt: Link

Daran kannst Du Dich ggf. orientieren.

Re: 'bessere' if-Schleifen

Verfasst: Dienstag 27. März 2012, 12:16
von recnice
Spitze,
vielen Dank !!!