Daten in .txt-Datei schreiben - Problem
Verfasst: Dienstag 16. Januar 2018, 16:55
Hi,
ich bin neu hier im Forum, aber vor allem auch in der Programmierung (mit Python).
Ich bin gerade dabei meine Bachelorarbeit über ein Python-Script zu schreiben, mit dem ich eine optische Simulation mit dem Programm "Zemax OpticStudio" mit einer Thermo-Simulation über Abaqus koppeln möchte. Nur so für euch zur Orientierung. Für mein eigentliches Problem ist das nicht so wichtig.
Ich habe Beispielscripte (https://github.com/indranilsinharoy/PyZ ... n-article)) gefunden, mit denen man Beispielsimulationen per Zemax ablaufen lassen kann.
Dabei werden in einer Simulationen die Ergebnisse in eine .txt-Datei geschrieben:
Später erfolgt in einem anderen Script die Ausgabe direkt in der IDLE:
Jetzt zu meinem Problem: Ich schaffe es nicht die Daten aus dem zweiten Script in eine .txt-Datei zu schreiben. Mein Ansatz sieht so aus:
Damit werden die Messdaten alle in eine Zeile geschrieben. Ich schaffe es nicht die Simulationsdaten in eine Art Tabelle zu schreiben. Aussehen soll es in der .txt-Datei aber in etwa so:
Ich würde mich sehr freuen wenn mir hier geholfen wird!
Liebe Grüße
Robert
ich bin neu hier im Forum, aber vor allem auch in der Programmierung (mit Python).
Ich bin gerade dabei meine Bachelorarbeit über ein Python-Script zu schreiben, mit dem ich eine optische Simulation mit dem Programm "Zemax OpticStudio" mit einer Thermo-Simulation über Abaqus koppeln möchte. Nur so für euch zur Orientierung. Für mein eigentliches Problem ist das nicht so wichtig.
Ich habe Beispielscripte (https://github.com/indranilsinharoy/PyZ ... n-article)) gefunden, mit denen man Beispielsimulationen per Zemax ablaufen lassen kann.
Dabei werden in einer Simulationen die Ergebnisse in eine .txt-Datei geschrieben:
Code: Alles auswählen
# trace the rays
ret = at.zArrayTrace(rd, timeout=5000)
# write the ray trace data into a file
outputfile = "C:\\tmp\\arrayTraceOutput.txt"
if ret==0:
k = 0
with open(outputfile, 'w') as f:
f.write("Listing of Array trace data\n")
f.write("{:^7} {:^7} {:^7} {:^15} {:^15} {:^9} {:^9} {:^9} {:^6}"
" {:^7} {:^7} {:^7} {:^7} {:^7} {:^7} {:^7}\n"
.format('px', 'py', 'error', 'xout', 'yout', 'l', 'm', 'n',
'opd', 'Exr', 'Exi', 'Eyr', 'Eyi', 'Ezr', 'Ezi', 'trans'))
for i in xrange(-radius, radius + 1, 1):
for j in xrange(-radius, radius + 1, 1):
k += 1
line = ("{:7.3f} {:7.3f} {:5d} {:15.6E} {:15.6E} {:9.5f} "
"{:9.5f} {:9.5f} {:7.3f} {:7.3f} {:7.3f} {:7.3f} "
"{:7.3f} {:7.3f} {:7.3f} {:7.4f}\n"
.format(i/(2*radius), j/(2*radius), rd[k].error,
rd[k].x, rd[k].y, rd[k].l, rd[k].m, rd[k].n,
rd[k].opd, rd[k].Exr, rd[k].Exi, rd[k].Eyr,
rd[k].Eyi, rd[k].Ezr, rd[k].Ezi, rd[k].intensity))
f.write(line)
Code: Alles auswählen
# Print the output
print("Listing of NSC Trace data:")
print("{:^4} {:^4} {:^4} {:^6} {:^4} {:^14} {:^14} {:^14} {:^12}"
.format('seg#', 'Prnt', 'Levl', 'In', 'Hit', 'X', 'Y', 'Z', 'Intensity'))
totalSegments = len(rayData)
for i, seg in enumerate(rayData):
segLevel = seg.segment_level
segParent = seg.segment_parent
insideOf = seg.inside_of
hitObj = seg.hit_object
x, y, z, l, m, n = seg.x, seg.y, seg.z, seg.l, seg.m, seg.n
intensity = seg.intensity
opl = seg.opl
print("{:4d} {:4d} {:4d} {:4d} {:4d} {:15.6E} {:15.6E} {:15.6E} {:8.4f}"
.format(i+1, segParent, segLevel, insideOf, hitObj, x, y, z, intensity))
Code: Alles auswählen
outputfile = "H:\\Listing of Array trace data.txt"
with open(outputfile, 'w') as f:
f.write("Listing of Array trace data\n")
f.write("{:^4} {:^4} {:^4} {:^6} {:^4} {:^14} {:^14} {:^14} {:^12}"
.format('seg#', 'Prnt', 'Levl', 'In', 'Hit', 'X', 'Y', 'Z', 'Intensity'))
for i, seg in enumerate(rayData):
segLevel = seg.segment_level
segParent = seg.segment_parent
insideOf = seg.inside_of
hitObj = seg.hit_object
x, y, z, l, m, n = seg.x, seg.y, seg.z, seg.l, seg.m, seg.n
intensity = seg.intensity
opl = seg.opl
line = ("{:4d} {:4d} {:4d} {:4d} {:4d} {:15.6E} {:15.6E} {:15.6E} {:8.4f}"
.format(i+1, segParent, segLevel, insideOf, hitObj, x, y, z, intensity))
f.write(line)
Code: Alles auswählen
Listing of NSC Trace data:
seg# Prnt Levl In Hit X Y Z Intensity
1 0 1 0 2 0.000000E+00 0.000000E+00 5.000000E+00 1.0000
2 1 2 2 2 1.435769E-01 0.000000E+00 5.500000E+00 0.3300
3 2 3 0 3 4.307306E+00 0.000000E+00 2.000000E+01 0.3300
4 1 2 2 2 0.000000E+00 0.000000E+00 5.500000E+00 0.3300
5 4 3 0 3 0.000000E+00 0.000000E+00 2.000000E+01 0.3300
6 1 2 2 2 -1.435769E-01 0.000000E+00 5.500000E+00 0.3300
7 6 3 0 3 -4.307306E+00 0.000000E+00 2.000000E+01 0.3300
8 1 2 0 0 5.520000E-01 0.000000E+00 3.077685E+00 0.3300
9 1 2 0 0 0.000000E+00 0.000000E+00 3.000000E+00 0.3300
10 1 2 0 0 -5.520000E-01 0.000000E+00 3.077685E+00 0.3300

Liebe Grüße
Robert