0

I am trying to control an external program called foo from python using:

p = Popen(["foo"], stdin=PIPE, stdout=PIPE)
data_out = p.communicate(input_txt[0]+"\n"+input_txt[1]+"\n")[0]

input_txt is a list of commands that gets executed.The code above executes two command lines of program foo: input_txt[0] and input_txt[1] and works just fine. However, the above code runs inside a loop and each time the size of input_txt is different (e.g might need to go up to input_txt[14] or more. How can I dynamically build the above command so that each time it will have the required number of input_txt entries?

One idea is to try and build the command using string operations and then using 'exec' to run it but how would I go about doing that?...and on top of that the newline '\n' character seems to complicate things. Any help will be greatly appreciated. Many thanks!

1 Answer 1

1

Try this:

input_str = "\n".join(input_txt) + "\n"

This will join the entries of input_txt, separating them with "\n" and appending a trailing "\n" to the end.

You can then use:

data_out = p.communicate(input_str)[0]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.