0

I have a small python snippet that calls a larger program (I did not write the larger one).

call(['function1', file1,  file2,  'data.labels=abc, xyz'])

The above works.

input ='abc, xyz'

Now I want to input "abc, xyz" as a variable holding this value

call(['function1', file1,  file2,  'data.labels=input'])

but it does not work.

How can I pass a variable value into variable data.labels within call subprocess.

2
  • A more specific question might be, "how do I take the string 'abc, xyz' and somehow get the string 'data.labels=abc, xyz'"? The answer isn't really specific to call at all, just ordinary string manipulation. Commented Sep 9, 2014 at 20:16
  • @Kevin: It is specific to subprocess.call() on Windows where CreateProcess() is used to start the child process that accepts a single string as a command, see subprocess.list2cmdline(). In other words, you can't pass arbitrary unescaped values on Windows because list2cmdline() doesn't cover all possible cases. Commented Sep 9, 2014 at 22:29

3 Answers 3

2
call(['function1', file1,  file2,  'data.labels=%s' % input])
Sign up to request clarification or add additional context in comments.

1 Comment

'data.labels=' + input seems like a more natural code.
1

Or

call(['function1', file1,  file2,  'data.labels=' + input)

If for some reason, input is not a string.

call(['function1', file1,  file2,  'data.labels=' + str(input) )

Comments

0

Another way to do the same:

call(['function1', file1,  file2,  'data.labels={0}'.format(input)])

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.