Albert-Jan Roskam <fo...@yahoo.com> Wrote in message: > > > ----- Original Message ----- > >> From: Danny Yoo <d...@hashcollision.org> >> To: Peter Otten <__pete...@web.de> >> Cc: Python Tutor Mailing List <tutor@python.org> >> Sent: Monday, February 24, 2014 11:01 PM >> Subject: Re: [Tutor] subprocess.call list vs. str argument >> >> Last comment (apologies for being so fragmented!). I don't know why >> the literal strings there are raw there. Altogether, I'd expect: >> >> ############################################# >> cmd1 = ['sphinx-apidoc', >> '-f', >> '-F', >> '-H', title, >> '-A', author, >> '-V', version, >> '-o', output_dir, >> input_dir] >> retcode = subprocess.call(cmd1, shell=False) >> >> ############################################# > > > Hi Danny, Peter, > > Thanks for helping me. Danny, your example works indeed and it is also very > readable. And now I do not need to use shell=True anymore. The raw strings > were a leftover from earlier attempts that contained the entire path (not > even relevant under Linux, but I still did it). Here is why I used > "shell=True" before. Is it related to the file paths? > > cmd = (r'sphinx-apidoc ' > r'-f -F ' > r'-H "%(title)s" ' > r'-A "%(author)s" ' > r'-V "%(version)s" ' > r'-o %(output_dir)s %(input_dir)s') % locals() > retcode = subprocess.call(cmd) > Traceback (most recent call last): > File "/home/albertjan/Downloads/documenter.py", line 188, in <module> > rst_to_html(input_dir, output_dir, title="Test", > author=getpass.getuser(), version="1.0.0") > File "/home/albertjan/Downloads/documenter.py", line 118, in rst_to_html > retcode = subprocess.call(cmd) > File "/usr/lib/python2.7/subprocess.py", line 493, in call > return Popen(*popenargs, **kwargs).wait() > File "/usr/lib/python2.7/subprocess.py", line 679, in __init__ > errread, errwrite) > File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child > raise child_exception > OSError: [Errno 2] No such file or directory >
Here you are feeding a string to the call function, while Danny was using a list. With a string, you must use shell=True, so the shell can turn it into a list. Usually much easier to use a list in the first place. -- DaveA _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor