Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin3!goblin1!goblin.stu.neva.ru!feed.xsnews.nl!border03.ams.xsnews.nl!feeder04.ams.xsnews.nl!abp001.ams.xsnews.nl!frontend-F09-20.ams.news.kpn.nl From: Cecil Westerhof Newsgroups: comp.lang.python Subject: Re: Best way to rewrite Popen Organization: Decebal Computing References: <87siastsby.fsf@Equus.decebal.nl> X-Face: "(y8cC@tg_12{">GF'UXTW]FHI2wMiZNrnf'1EFQ&O#$m:f#O7+7}kR,v+Pti8=Vi/Z"g^?b"E X-Homepage: http://www.decebal.nl/ Date: Tue, 19 May 2015 21:13:39 +0200 Message-ID: <874mn8tm70.fsf@Equus.decebal.nl> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:hy8fGf34Lki3/PElGI8aId4BRRs= MIME-Version: 1.0 Content-Type: text/plain Lines: 40 NNTP-Posting-Host: 81.207.62.244 X-Trace: 1432063768 news.kpn.nl 32735 81.207.62.244@kpn/81.207.62.244:56777 Xref: csiph.com comp.lang.python:90892 Op Tuesday 19 May 2015 19:36 CEST schreef Jon Ribbens: > On 2015-05-19, Cecil Westerhof wrote: >> At the moment I am playing with things like: p = >> subprocess.Popen('ls -l', shell = True, stdout = subprocess.PIPE) >> >> I think that most of the times this are the values I want. So it >> would be nice to overrule the defaults. What is the best way to do >> this? So creating a function that is exactly the same except for >> the defaults for shell and stdout (and maybe stderr). > > Yes. > > def shellprocess(cmd, **kwargs): > return subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, > **kwargs) Will that not go wrong if I call it with? shellprocess('ls -1', shell = False) >> It is a little less important as I first thought, because I found >> the following: error, output = subprocess.getstatusoutput('ls -1') >> files_new = output.splitlines() But it is still nice to know. > > Why are you doing this anyway, rather than using os.listdir()? > Invoking subprocesses via the shell is very rarely a good idea. I want to rewrite a Bash script into a Python script. The 'ls -1' is only an example. But Popen and listdir give a different output. The sorting is different. But I could sort it myself. Another problem is that I work with a filter later on. But I could do that with Python also of-course. So maybe I should rethink what I want to do. ;-) -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof