Ich möchte gern ein Phytonskript verändern.
Mein Programm liest zurzeit einen Startwert, einen Endwert und die Schrittgröße ein.
Ich möchte aber eine Zahlenreihe vorgeben, also statt „1 2 3 4 5“ „1.2 2.1 3.0 4.5 5“.
Meine Zahlenreihe würde ich in J.dat speichern.
Folgende Ausgangssitiation habe ich:
Code: Alles auswählen
# Berechnungsbereich (J-Werte alle mit Faktor 10 angeben!!)
jstart = int(sys.argv[3])
jend = int(sys.argv[4])
jinc = int(sys.argv[5])
…
…
for j in range (jstart,jend+1,jinc):
n = float(j)/10
jfile = open("J%s.pcl" %n, "w")
jfile.write("<poti_control caption=\"noName\"> \n")
jfile.write("<float name=\"J\" value=\"%s\" /> \n" % str(n))
jfile.write("</poti_control>\n")
jfile.close()
list = []
cmd = ["/../Programm", "J%s.pcl" %n, "%s.pcl" %name, "-noGui"]
subprocess.call(cmd)
os.remove("J%s.pcl" %n)
if (n%1) == 0.0:
n = int(n)
input = open("result_%s_%s.res" % (folder, n), "r") # Hier noch Dateinamen variabel machen
for line in input:
column=line.split()
list.append(column)------------------------------------------------ Mein Vorschlag-----------------------
Code: Alles auswählen
# Berechnungsbereich (J-Werte alle mit Faktor 10 angeben!!)
jstart = int(sys.argv[3])
jend = int(sys.argv[4])
jinclist =[]
jinc=open("J.dat","r")
for line in jinc:
column=line.split()
jinclist.append(column)
jinc.close()
…
…
for j in range (jstart,jend+1,1):
n = float(jinc[j][1])/10
jfile = open("J%s.pcl" %n, "w")
jfile.write("<poti_control caption=\"noName\"> \n")
jfile.write("<float name=\"J\" value=\"%s\" /> \n" % str(n))
jfile.write("</poti_control>\n")
jfile.close()
list = []
cmd = ["/../Programm", "J%s.pcl" %n, "%s.pcl" %name, "-noGui"]
subprocess.call(cmd)
os.remove("J%s.pcl" %n)
if (n%1) == 0.0:
n = int(n)
input = open("result_%s_%s.res" % (folder, n), "r") # Hier noch Dateinamen variabel machen
for line in input:
column=line.split()
list.append(column)Fehlermeldung: Traceback (most recent call last):
File "01_auxfiles/ffd.py", line 36, in <module>
for line in jinc:
ValueError: I/O operation on closed file
Ich hoffe, dass die Informationen reichen.
Wo ist mein Denkfehler? Wieso kann man das so nicht machen?
Lieben Dank
Alex
