* TypeError - Need help passings args

E

Ernesto

My program is below. I'm trying to use two Windows ".exe" files with
my command line python interface. I get user input, then call
"launchWithoutConsole". This was working OK until I introduced the
'args' part. Now I get the following error everytime I call
"launchWithoutConsole":

return subprocess.Popen([command] + args,
startupinfo=startupinfo).wait()

TypeError: can only concatenate list (not "str") to list

I'm not sure if it's the WAY I'm passing it or if it's the function
itself (which I retrieved from
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/409002
)

Please help. Thanks!

import subprocess

def launchWithoutConsole(command, args):
"""Launches 'command' windowless and waits until finished"""
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
return subprocess.Popen([command] + args,
startupinfo=startupinfo).wait()

infinity = 1
#Get user input in iterative loop
while infinity:
userCommand = raw_input("> ")
if userCommand == "connect":
launchWithoutConsole("devcon.exe",'enable
"@USB\VID_0403&PID_6010&MI_00\7&15E4F68&1&0000')
launchWithoutConsole("devcon.exe",'enable
"@USB\VID_0403&PID_6010&MI_01\7&15E4F68&1&0001')
elif userCommand == "disconnect":
launchWithoutConsole("devcon.exe",'disable
"@USB\VID_0403&PID_6010&MI_00\7&15E4F68&1&0000')
launchWithoutConsole("devcon.exe",'disable
"@USB\VID_0403&PID_6010&MI_01\7&15E4F68&1&0001')
else:
# include full path to rib.exe in quotes.
launchWithoutConsole("rib.exe", userCommand)
 
J

Juho Schultz

Ernesto said:
My program is below. I'm trying to use two Windows ".exe" files with
my command line python interface. I get user input, then call
"launchWithoutConsole". This was working OK until I introduced the
'args' part. Now I get the following error everytime I call
"launchWithoutConsole":

return subprocess.Popen([command] + args,
startupinfo=startupinfo).wait()

TypeError: can only concatenate list (not "str") to list

I'm not sure if it's the WAY I'm passing it or if it's the function
itself (which I retrieved from
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/409002
)

Please help. Thanks!
[command] is a list. So also "args" should be a list,
otherwise [command] + args produces an error.
Add a few square brackets to the calls, just like in the link.
 
E

Ernesto

Thanks, that ran without errors. The only problem now is that it
launches devcon.exe without actually passing the parameters to the
program. It's as if I just typed "devcon" at a Windows command prompt
and pressed enter. I can't figure out why it doesn't accept my
parameter.
 
J

Juho Schultz

Ernesto said:
Thanks, that ran without errors. The only problem now is that it
launches devcon.exe without actually passing the parameters to the
program. It's as if I just typed "devcon" at a Windows command prompt
and pressed enter. I can't figure out why it doesn't accept my
parameter.
I run python 2.3 on Linux os subprocess module and Windows executables
are not too familiar to me. But according to docs subprocess.Popen()
should accept both list and string arguments.

Your strings have backslashes so check docs.python.org/ref/strings.html

a = 'disable "@USB\VID_0403&PID_6010&MI_00\7&15E4F68&1&0000'
print a
disable "@USB\VID_0403&PID_6010&MI_00&15E4F68&1&0000

\7 is the ASCII bell so your args may be different from what you think.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top