hello guys,
i wrote this script on python compiler but how to make the output as shown in the this code if i am using dynamo
if lst [s] [2] [z] > 5 :
print(“fixtures is”, inputfx)
print(“gpm is”, x)
print(“diameter is” , actual[s+1])
print(“velocity is” , lst[s+1][1][e])
print (“friction is”, lst[s+1][2][e])
else :
print(“fixtures is”, inputfx)
print(“gpm is” , x)
print(“diameter is”, actual[s])
print(“velocity is”, lst[s][1][z])
print(“friction is”, lst[s][2][z])
There is no easy way to do this. The one workaround I have used is to redirect stdout to a .txt file.
import sys
filepath = IN[0] # Assuming you're feeding a file path into the first input
# e.g. r'C:\Users\User1\Documents\Temporary\print.txt'
stdout_original = sys.stdout
stdout_file = open(filepath, 'w')
sys.stdout = stdout_file
print 'example'
print 'other example'
sys.stdout = stdout_original
stdout_file.close()
I also found this other interesting method which redirects stdout to StringIO() which won’t require you to open a separate file, but would require you to split your ‘printed’ data from the rest of your output going downstream.
If you’re looking to keep the results in Dynamo, then create variables and assign them to the output. Some sudo code:
if test
Variable1 = 1
Variable2 = 2
else
Variable1 = 3
Variable2 = 4
OUT = [Variable1, Variable2]
You can try the codes below, and link the OUT to a Watch Node.
import sys
from io import StringIO
sys.stdout = StringIO()
print("***Starting print***")
if lst [s] [2] [z] > 5 :
print(“fixtures is”, inputfx)
print(“gpm is”, x)
print(“diameter is” , actual[s+1])
print(“velocity is” , lst[s+1][1][e])
print (“friction is”, lst[s+1][2][e])
else :
print(“fixtures is”, inputfx)
print(“gpm is” , x)
print(“diameter is”, actual[s])
print(“velocity is”, lst[s][1][z])
print(“friction is”, lst[s][2][z])
print("***Ending print***")
sys.stdout.seek(0)
OUT = sys.stdout.read()