On 08/08/2019 10:18, Peter Otten wrote:
Paul St George wrote:

I am using Python 3.5 within Blender. I want to collect values of the
current settings and then write all the results to a file.

I can see the settings and the values in the Python console by doing
this for each of the settings
|
|

|print(“Focal length:”,bpy.context.object.data.lens)|

---Focal length: 35.0


or I can do many at a time like this:

|print("Plane rotation
X:",bpy.data.objects["Plane"].rotation_euler[0],"\nPlane rotation
Y:",bpy.data.objects["Plane"].rotation_euler[1],"\nPlane rotation
Z:",bpy.data.objects["Plane"].rotation_euler[2])|

---Plane rotation X: 0.0
---Plane rotation Y: 0.0
---Plane rotation Z: 0.0


My question:
How do I write all the results to a file? I have tried file.write but
can only write one argument at a time. Is there a better way to open a
file, write the collected information to it and then close the file?

The print() function has a keyword-only file argument. So:

with open(..., "w") as outstream:
     print("Focal length:", bpy.context.object.data.lens, file=outstream)

|print("Plane rotation
X:",bpy.data.objects["Plane"].rotation_euler[0],"\nPlane rotation
Y:",bpy.data.objects["Plane"].rotation_euler[1],"\nPlane rotation
Z:",bpy.data.objects["Plane"].rotation_euler[2])|
This looks messy to me. I' probably use intermediate variables

x, y, z = bpy.data.objects["Plane"].rotation_euler
print(
     "Plane rotation X:", x,
     "Plane rotation Y:", y,
     "Plane rotation Z:", z,
     file=outstream, sep="\n"
)

or even a loop.


That worked perfectly.

outstream = open(path to my file,'w')
print(
whatever I want to print
file=outstream
)
outstream.close()



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to