jeudi 25 octobre 2018

Unable to iterate random values in subsequent lines in Python

There are probably many more straightforward ways of achieving my aim here, but as a Python newbie, I'd appreciate it if we could just concentrate on the code I'm using. I'm attempting to write out a list of commands for a graphics program (G'MIC) and output those to a command prompt (although not directly) using Python 3.6.4 (OS: Windows 10 Pro), I need to write many lines of code but each line has to have different sets of numbers (integers and floats).. for example in the code I'm attempting to use right now the syntax is like this:

gmic v -99 input_.png fx_pastell 
0.5,1,0,10,40,633,11,95,1,1,0.291651967558584,0,0,8,150,1,81,1,0,0,0 -o 
out_001.png

^ all the variables denote parameters within the particular script (in this case Pastell effect).

The code I wrote relies on the Random module to get certain numbers within a range for each parameter that I want to change. My stumbling block is to get the script to output DIFFERENT random numbers each time it prints a line. Here is my code (it's awful, I know..):

import random

a = random.randint (3,13)
b = random.randint (1,68)
c = random.randint (1,682)
d = random.randint (2,12)
e = random.randint (1,109)
g = random.randint (1,8)
h = random.uniform (0, 1)
k = random.randint (1,11)
l = random.randint (1,201)
n = random.randint (1,300)
o = random.randint (1,4)

dataFile = open("gmic1.txt", "w")
for line in range(120):
    dataFile.write("gmic v -99 input_.png fx_pastell 0.5,1,0" + "," + str(a) 
+ "," + str(b) + "," + str(c) + "," +str(d) + "," + str(e) + ",1," + str(g) 
+ "," + str(h) + ",0,0," + str(k) + "," + str(l) + ",1,"  + str(n) + "," + 
str(o) +"," + "0,0,0 -o out_%04d.png \n" % line)

dataFile.close()

The output is like this:

gmic v -99 input_.png fx_pastell 
0.5,1,0,12,2,521,12,85,1,7,0.04003331068764937,0,0,8,17,1,297,2,0,0,0 -o 
out_0000.png 
gmic v -99 input_.png fx_pastell 
0.5,1,0,12,2,521,12,85,1,7,0.04003331068764937,0,0,8,17,1,297,2,0,0,0 -o 
out_0001.png 

.. etc...

no errors as such, but not outputting a different set of numbers each time as I'd hoped.

The first input image name variable I can change with Notepad++'s Column Editor, so that takes care of that, I only need to know how to make each line of code differ.

Any help greatly appreciated!




Aucun commentaire:

Enregistrer un commentaire