Re: a.index(float('nan')) fails

2012-10-26 Thread Terry Reedy
On 10/25/2012 10:44 PM, Steven D'Aprano wrote: On Thu, 25 Oct 2012 22:04:52 -0400, Terry Reedy wrote: It is a consequence of the following, which some people (but not all) believe is mandated by the IEEE standard. >>> nan = float('nan') >>> nan is nan True The IEEE 754 standard says noth

Re: a.index(float('nan')) fails

2012-10-26 Thread Terry Reedy
On 10/25/2012 10:19 PM, MRAB wrote: On 2012-10-26 03:04, Terry Reedy wrote: On 10/25/2012 9:46 PM, mambokn...@gmail.com wrote: a = [float('nan'), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a [nan, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] a.index(float('nan')) This is a second nan object, and it is not in t

better way for ' '.join(args) + '\n'?

2012-10-26 Thread Ulrich Eckhardt
Hi! General advise when assembling strings is to not concatenate them repeatedly but instead use string's join() function, because it avoids repeated reallocations and is at least as expressive as any alternative. What I have now is a case where I'm assembling lines of text for driving a pro

Re: bit count or bit set && Python3

2012-10-26 Thread Antoon Pardon
On 25-10-12 16:47, Charles Hixson wrote: > In Python3 is there any good way to count the number of on bits in an > integer (after an & operation)? > Alternatively, is there any VERY light-weight implementation of a bit > set? I'd prefer to use integers, as I'm probably going to need > thousands of

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Peter Otten
Ulrich Eckhardt wrote: > Hi! > > General advise when assembling strings is to not concatenate them > repeatedly but instead use string's join() function, because it avoids > repeated reallocations and is at least as expressive as any alternative. > > What I have now is a case where I'm assemblin

Re: Quickie - Regexp for a string not at the beginning of the line

2012-10-26 Thread Janis Papanagnou
Am 26.10.2012 06:45, schrieb Rivka Miller: Thanks everyone, esp this gentleman. Who is "this"? The solution that worked best for me is just to use a DOT before the string as the one at the beginning of the line did not have any char before it. Which was what I suggested, and where you rude

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Steven D'Aprano
On Fri, 26 Oct 2012 09:49:50 +0200, Ulrich Eckhardt wrote: > Hi! > > General advise when assembling strings is to not concatenate them > repeatedly but instead use string's join() function, because it avoids > repeated reallocations and is at least as expressive as any alternative. > > What I ha

Re: while expression feature proposal

2012-10-26 Thread Steven D'Aprano
On Fri, 26 Oct 2012 17:23:12 +1100, Chris Angelico wrote: > Why is everyone skirting around C-style assignment expressions as though > they're simultaneously anathema and the goal? :) Only if your goal is to introduce an anathema :P -- Steven -- http://mail.python.org/mailman/listinfo/python-

Re: Question about long-running web scripts

2012-10-26 Thread Gilles
On Thu, 25 Oct 2012 08:53:11 -0400, David Hutto wrote: >>> OTOH, Python web scripts can be written as long-running scripts: In >>> this case, what is the added-value of using FastCGI? Why can't the >>> web server simply call the Python script directly, just like CGI? > >The server should call a th

Re: Question about long-running web scripts

2012-10-26 Thread Gilles
On Thu, 25 Oct 2012 14:24:16 +0100, Tim Golden wrote: >> But actually, I didn't mean one-shot scripts, where the Python >> interpreter + script must be loaded each time, but rather: If I leave >> a Python running in an endless loop, why not just use either CGI or >> some other basic way to call th

Re: Quickie - Regexp for a string not at the beginning of the line

2012-10-26 Thread Asen Bozhilov
Rivka Miller wrote: > I am looking for a regexp for a string not at the beginning of the > line. > > For example, I want to find $hello$ that does not occur at the > beginning of the string, ie all $hello$ that exclude ^$hello$. The begging of the string is zero width character. So you could use n

RE: Fastest web framework

2012-10-26 Thread Andriy Kornatskyy
Alex, You can read wheezy.web introduction here: http://mindref.blogspot.com/2012/10/wheezy-web-introduction.html Thanks. Andriy Kornatskyy > Date: Mon, 15 Oct 2012 18:26:16 -0700 > Subject: Re: Fastest web framework > From: wuwe...@gmail.com > To: pyt

Re: Question about long-running web scripts

2012-10-26 Thread Tim Golden
On 26/10/2012 10:58, Gilles wrote: > On Thu, 25 Oct 2012 14:24:16 +0100, Tim Golden > wrote: >>> But actually, I didn't mean one-shot scripts, where the Python >>> interpreter + script must be loaded each time, but rather: If I leave >>> a Python running in an endless loop, why not just use either

Re: Question about long-running web scripts

2012-10-26 Thread Gilles
On Fri, 26 Oct 2012 12:00:17 +0100, Tim Golden wrote: >Certainly there are Python equivalents (mod_python, mod_wsgi, etc.) >which can run in effectively the same way as mod_php, and they could be >configured to run an fcgi frontend script, I presume. There's always a >certain confusion here becaus

Re: Quickie - Regexp for a string not at the beginning of the line

2012-10-26 Thread Ben Bacarisse
Rivka Miller writes: > Thanks everyone, esp this gentleman. Kind of you to single me out, but it was Janis Papanagnou who first posted the solution that you say "works best" for you. -- Ben. -- http://mail.python.org/mailman/listinfo/python-list

Re: Quickie - Regexp for a string not at the beginning of the line

2012-10-26 Thread Ed Morton
On 10/25/2012 11:45 PM, Rivka Miller wrote: Thanks everyone, esp this gentleman. The solution that worked best for me is just to use a DOT before the string as the one at the beginning of the line did not have any char before it. That's fine but do you understand that that is not an RE that ma

Re: Quickie - Regexp for a string not at the beginning of the line

2012-10-26 Thread Joel Goldstick
On Fri, Oct 26, 2012 at 8:32 AM, Ed Morton wrote: > On 10/25/2012 11:45 PM, Rivka Miller wrote: >> >> Thanks everyone, esp this gentleman. >> >> The solution that worked best for me is just to use a DOT before the >> string as the one at the beginning of the line did not have any char >> before it

Re: bit count or bit set && Python3

2012-10-26 Thread Neil Cerutti
On 2012-10-25, Ian Kelly wrote: > On Thu, Oct 25, 2012 at 2:00 PM, Neil Cerutti > wrote: >> Yes indeed! Python string operations are fast enough and its >> arithmetic slow enough that I no longer assume I can beat a >> neat lexicographical solution. Try defeating the following >> with arithmetic:

Escaping from the tedium of naive datetime objects.

2012-10-26 Thread Adam Tauno Williams
Yesterday I stumbled upon a nice solution to dealing with naive datetimes vs. localized datetimes, and much of the tedium that issues from that problem. Maybe this is very common knownledge but it wasn't mentioned in anything I've read - it really cleans up some opertaions.

Re: while expression feature proposal

2012-10-26 Thread Dan Loewenherz
On Thursday, October 25, 2012 11:06:01 PM UTC-7, Paul Rubin wrote: > Dan Loewenherz writes: > > > In this case, profile_id is "None" when the loop breaks. It would be > > > much more straightforward (and more Pythonic, IMO), to write: > > > > > > client = StrictRedis() > > > while cli

Re: a.index(float('nan')) fails

2012-10-26 Thread Steven D'Aprano
On Fri, 26 Oct 2012 03:54:02 -0400, Terry Reedy wrote: > On 10/25/2012 10:44 PM, Steven D'Aprano wrote: >> On Thu, 25 Oct 2012 22:04:52 -0400, Terry Reedy wrote: >> >>> It is a consequence of the following, which some people (but not all) >>> believe is mandated by the IEEE standard. >>> >>> >>>

Re: while expression feature proposal

2012-10-26 Thread Ian Kelly
On Fri, Oct 26, 2012 at 9:29 AM, Dan Loewenherz wrote: > while client.spop("profile_ids") as truthy, profile_id: > if not truthy: > break > > print profile_id > > Here, client.spop returns a tuple, which will always returns true. We then > extract the first element

Re: bit count or bit set && Python3

2012-10-26 Thread casevh
On Thursday, October 25, 2012 7:56:25 AM UTC-7, Charles Hixson wrote: > In Python3 is there any good way to count the number of on bits in an > integer (after an & operation)? You may want to look at gmpy2[1] and the popcount() function. > > Alternatively, is there any VERY light-weight impleme

Re: while expression feature proposal

2012-10-26 Thread Paul Rubin
Dan Loewenherz writes: > We also don't special case things like this just because x is an empty > string. If this "while EXPR as VAR" thing were to move forward, we > shouldn't treat the truth testing any differently than how we already > do. IMO we should write our applications with the understan

Re: a.index(float('nan')) fails

2012-10-26 Thread Steven D'Aprano
On Fri, 26 Oct 2012 04:00:03 -0400, Terry Reedy wrote: > On 10/25/2012 10:19 PM, MRAB wrote: >> In summary, .index() looks for an item which is equal to its argument, >> but it's a feature of NaN (as defined by the standard) that it doesn't >> equal NaN, therefore .index() will never find it. >

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Hubert Grünheidt
Hi Ulrich, is this acceptable? args = ['foo', 'bar', 'baz'] args.append('\n') line = ' '.join(args) Cheers, Hubert On 10/26/2012 09:49 AM, Ulrich Eckhardt wrote: Hi! General advise when assembling strings is to not concatenate them repeatedly but instead use string's join()

Re: bit count or bit set && Python3

2012-10-26 Thread Charles Hixson
cas...@gmail.com wrote: On Thursday, October 25, 2012 7:56:25 AM UTC-7, Charles Hixson wrote: In Python3 is there any good way to count the number of on bits in an integer (after an& operation)? You may want to look at gmpy2[1] and the popcount() function. Alternatively, is there any VERY li

Re: a.index(float('nan')) fails

2012-10-26 Thread MRAB
On 2012-10-26 17:23, Steven D'Aprano wrote: On Fri, 26 Oct 2012 04:00:03 -0400, Terry Reedy wrote: On 10/25/2012 10:19 PM, MRAB wrote: In summary, .index() looks for an item which is equal to its argument, but it's a feature of NaN (as defined by the standard) that it doesn't equal NaN, ther

Re: a.index(float('nan')) fails

2012-10-26 Thread Chris Angelico
On Sat, Oct 27, 2012 at 3:23 AM, Steven D'Aprano wrote: > In real life, you are *much* more likely to run into these examples of > "insanity" of floats than to be troubled by NANs: > > - associativity of addition is lost > - distributivity of multiplication is lost > - commutativity of addition is

Recommended way to unpack keyword arguments using **kwargs ?

2012-10-26 Thread Jeff Jeffries
I have been doing the following to keep my class declarations short: class MyClass(MyOtherClass): def __init__(self,*args,**kwargs): self.MyAttr = kwargs.get('Attribute',None) #To get a default MyOtherClass.__init__(self,*args,**kwargs) Is there a recommended way to get keywor

Re: Recommended way to unpack keyword arguments using **kwargs ?

2012-10-26 Thread Ian Kelly
On Fri, Oct 26, 2012 at 10:58 AM, Jeff Jeffries wrote: > I have been doing the following to keep my class declarations short: > > class MyClass(MyOtherClass): > def __init__(self,*args,**kwargs): > self.MyAttr = kwargs.get('Attribute',None) #To get a default > MyOtherClass.__in

Re: a.index(float('nan')) fails

2012-10-26 Thread Steven D'Aprano
On Sat, 27 Oct 2012 03:45:46 +1100, Chris Angelico wrote: > On Sat, Oct 27, 2012 at 3:23 AM, Steven D'Aprano > wrote: >> In real life, you are *much* more likely to run into these examples of >> "insanity" of floats than to be troubled by NANs: >> >> - associativity of addition is lost >> - distr

Re: a.index(float('nan')) fails

2012-10-26 Thread Terry Reedy
On 10/26/2012 11:26 AM, Steven D'Aprano wrote: On Fri, 26 Oct 2012 03:54:02 -0400, Terry Reedy wrote: On 10/25/2012 10:44 PM, Steven D'Aprano wrote: On Thu, 25 Oct 2012 22:04:52 -0400, Terry Reedy wrote: It is a consequence of the following, which some people (but not all) believe is mandate

[ANN] pypiserver 1.0.0 - minimal private pypi server

2012-10-26 Thread Ralf Schmitt
Hi, I've just uploaded pypiserver 1.0.0 to the python package index. pypiserver is a minimal PyPI compatible server. It can be used to serve a set of packages and eggs to easy_install or pip. pypiserver is easy to install (i.e. just 'pip install pypiserver'). It doesn't have any external depende

Re: a.index(float('nan')) fails

2012-10-26 Thread Terry Reedy
On 10/26/2012 12:23 PM, Steven D'Aprano wrote: On Fri, 26 Oct 2012 04:00:03 -0400, Terry Reedy wrote: This inconsistency is an intentional decision to not propagate the insanity of nan != nan to Python collections. That's a value judgement about NANs which is not shared by everyone. Quite f

Re: a.index(float('nan')) fails

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 2:40 PM, Steven D'Aprano wrote: >> The problem isn't with the associativity, it's with the equality >> comparison. Replace "x == y" with "abs(x-y)> and all your statements fulfill people's expectations. > > O RYLY? > > Would you care to tell us which epsilon they should use

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Tycho Andersen
On Fri, Oct 26, 2012 at 09:49:50AM +0200, Ulrich Eckhardt wrote: > Hi! > > General advise when assembling strings is to not concatenate them > repeatedly but instead use string's join() function, because it > avoids repeated reallocations and is at least as expressive as any > alternative. > > Wh

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Dave Angel
On 10/26/2012 05:26 PM, Tycho Andersen wrote: > On Fri, Oct 26, 2012 at 09:49:50AM +0200, Ulrich Eckhardt wrote: >> Hi! >> >> General advise when assembling strings is to not concatenate them >> repeatedly but instead use string's join() function, because it >> avoids repeated reallocations and is

Re: better way for ' '.join(args) + '\n'?

2012-10-26 Thread Tycho Andersen
On Fri, Oct 26, 2012 at 05:36:50PM -0400, Dave Angel wrote: > On 10/26/2012 05:26 PM, Tycho Andersen wrote: > > Assuming it's the length of the list that's the problem, not the > > length of the strings in the list... > > > > args = ['foo', 'bar', 'baz'] > > args[-1] = args[-1] + '\n' > > line = '

Re: How to set 250000 baud rate in pyserial ?

2012-10-26 Thread kurabas
Error is like cannot set special baud rate. But as I said pyserial set this speed without problem for ttyUSB0 So it seems pyserial uses diefferent code depending of port type. I tried to simlink ln -s ttyACM0 ttyUSB0 but it does not work On Thursday, October 25, 2012 9:11:23 PM UTC+3, Dennis Lee

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 26Oct2012 09:10, Paul Rubin wrote: | However, if the "as" can be part of an expression as in Chris Angelico's | post, Chris's suggestion | | while (client.spop("profile_ids") as profile_id) is not None: | print profile_id | | looks good to me. Now this pulls me from a -0 to a +

Re: How to set 250000 baud rate in pyserial ?

2012-10-26 Thread Michael Torrie
On 10/26/2012 04:01 PM, kura...@gmail.com wrote: > Error is like cannot set special baud rate. But as I said pyserial > set this speed without problem for ttyUSB0 So it seems pyserial uses > diefferent code depending of port type. I tried to simlink ln -s > ttyACM0 ttyUSB0 but it does not work No

Re: while expression feature proposal

2012-10-26 Thread Ian Kelly
On Fri, Oct 26, 2012 at 4:03 PM, Cameron Simpson wrote: > It will work anywhere an expression is allowed, and superficially > doesn't break stuff that exists if "as" has the lowest precedence. Please, no. There is no need for it outside of while expressions, and anywhere else it's just going to

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 1:12 AM, Dan Loewenherz wrote: > It seems the topic of this thread has changed drastically from the original > message. > > 1) "while EXPR as VAR" in no way says that EXPR must be a boolean value. In > fact, a use case I've run into commonly in web development is popping

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 2:23 AM, Chris Angelico wrote: > while (client.spop("profile_ids") as profile_id) is not None: > print profile_id > > Why is everyone skirting around C-style assignment expressions as > though they're simultaneously anathema and the goal? :) Why should these two statem

Re: while expression feature proposal

2012-10-26 Thread Tim Chase
On 10/26/12 17:03, Cameron Simpson wrote: > On 26Oct2012 09:10, Paul Rubin wrote: > | while (client.spop("profile_ids") as profile_id) is not None: > > Now this pulls me from a -0 to a +0.5. > > Any doco would need to make it clear that no order of operation is > implied, so that this: > >

Re: SSH Connection with Python

2012-10-26 Thread Gelonida N
On 10/25/2012 12:47 PM, Kamlesh Mutha wrote: You can use paramiko module. Very easy to use. I also use paramiko for a small script. However I'm a little hesitant to use paramik for new code. The web page says: "last updated 21-May-2011" and the github url http://github.com/robey/paramiko/

Re: while expression feature proposal

2012-10-26 Thread Dan Loewenherz
On Fri, Oct 26, 2012 at 4:12 PM, Devin Jeanpierre wrote: > > For loops are pythonic. You can do this in Python today: > > client = StrictRedis() > for profile_id in iter(lambda: client.spop("profile_ids"), None): > pass > > I would like a better iter(), rather than a better while l

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 6:03 PM, Cameron Simpson wrote: > Any doco would need to make it clear that no order of operation is > implied, so that this: > > x = 1 > y = (2 as x) + x > > does not have a defined answer; might be 2, might be 3. Just like any > other function call with side effects.

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 26Oct2012 19:41, Devin Jeanpierre wrote: | On Fri, Oct 26, 2012 at 6:03 PM, Cameron Simpson wrote: | > Any doco would need to make it clear that no order of operation is | > implied, so that this: | > | > x = 1 | > y = (2 as x) + x | > | > does not have a defined answer; might be 2, might

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 7:41 PM, Dan Loewenherz wrote: -- snip insanity -- > > But this is yucky. I'd much rather have something a bit more clear to the > reader. That's why I said I wanted a better iter, not some equality-overriding object strawman thing. I was thinking more like this: for

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 7:56 PM, Cameron Simpson wrote: > No. Separate _expressions_ are evaluated left to right. > > So this: > > f(1), f(2) > > calls "f(1)" first, then "f(2)". But this: > > f(1) + f(2) > > need not do so. Counter-documentation welcomed, but the doco you cite > does not defi

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 26Oct2012 18:26, Tim Chase wrote: | On 10/26/12 17:03, Cameron Simpson wrote: | > On 26Oct2012 09:10, Paul Rubin wrote: | > | while (client.spop("profile_ids") as profile_id) is not None: | > | > Now this pulls me from a -0 to a +0.5. | > | > Any doco would need to make it clear that no

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 27Oct2012 10:56, I wrote: | On 26Oct2012 19:41, Devin Jeanpierre wrote: | | But function calls with side effects _do_ have a defined order of | | evaluation. Left to right. | | And the answer should be 4. | | http://docs.python.org/reference/expressions.html#evaluation-order | | No. Separate _

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 26Oct2012 16:48, Ian Kelly wrote: | On Fri, Oct 26, 2012 at 4:03 PM, Cameron Simpson wrote: | > It will work anywhere an expression is allowed, and superficially | > doesn't break stuff that exists if "as" has the lowest precedence. | | Please, no. There is no need for it outside of while ex

Re: while expression feature proposal

2012-10-26 Thread Steven D'Aprano
On Fri, 26 Oct 2012 19:12:17 -0400, Devin Jeanpierre wrote: > I would like a better iter(), rather than a better while loop. It is > irritating to pass in functions that take arguments, and it is > impossible to, say, pass in functions that should stop being iterated > over when they return _eithe

Re: while expression feature proposal

2012-10-26 Thread Cameron Simpson
On 26Oct2012 19:19, Devin Jeanpierre wrote: | (I've always been partial to ":=", personally.) I'm less so. It is hard to type (on my keyboard anyway, that's a shifted keystroke followed by an unshifted one). I mank that up often enough that I would resent it for something as oft used as an assign

Re: SSH Connection with Python

2012-10-26 Thread Roy Smith
In article , Gelonida N wrote: > Another problem is, that paramiko depends on pycrypto 2.1+ > which doesn't exist as binary release for python 2.7 I'm running paramiko-1.7.6 with python 2.7.3 on my Ubunto Precise box. I'm reasonably sure all I did was "pip install paramiko". On the other han

Re: while expression feature proposal

2012-10-26 Thread Devin Jeanpierre
On Fri, Oct 26, 2012 at 8:18 PM, Steven D'Aprano wrote: >> I would like a better iter(), rather than a better while loop. It is >> irritating to pass in functions that take arguments, and it is >> impossible to, say, pass in functions that should stop being iterated >> over when they return _eithe

Re: while expression feature proposal

2012-10-26 Thread Chris Angelico
On Sat, Oct 27, 2012 at 10:19 AM, Devin Jeanpierre wrote: > On Fri, Oct 26, 2012 at 2:23 AM, Chris Angelico wrote: >> while (client.spop("profile_ids") as profile_id) is not None: >> print profile_id >> >> Why is everyone skirting around C-style assignment expressions as >> though they're sim

how to change os.popen4 to subprocess

2012-10-26 Thread skyworld
Hi, I'm new to python and I'm trying to porting some scripts from v0.96 to v2.0.1. A piece of code is like this: cmd_h = os.popen4(env['SYSCMDLINE'])[1] the system indicates the popen4 is deprecated and suggest to use subprocess. Can anybody tell me how to use subprocess in this case? and what d

attaching names to subexpressions

2012-10-26 Thread Steve Howell
I have been reading the thread "while expression feature proposal," and one of the interesting outcomes of the thread is the idea that Python could allow you to attach names to subexpressions, much like C allows. In C you can say something like this: tax_next_year = (new_salary = salary * (1 +

Re: how to change os.popen4 to subprocess

2012-10-26 Thread MRAB
On 2012-10-27 03:28, skyworld wrote: Hi, I'm new to python and I'm trying to porting some scripts from v0.96 to v2.0.1. A piece of code is like this: cmd_h = os.popen4(env['SYSCMDLINE'])[1] the system indicates the popen4 is deprecated and suggest to use subprocess. Can anybody tell me how to

Re: how to change os.popen4 to subprocess

2012-10-26 Thread Mark Lawrence
On 27/10/2012 03:28, skyworld wrote: Hi, I'm new to python and I'm trying to porting some scripts from v0.96 to v2.0.1. A piece of code is like this: What software are you talking about here, it's certainly not Python versions as the most up to date are 2.7.3 and 3.3.0? cmd_h = os.popen4(

Re: while expression feature proposal

2012-10-26 Thread Paul Rubin
Steven D'Aprano writes: > There's no need for it *inside* of while expressions. It doesn't add to > the expressiveness of the language, or increase the power of the > language, or help people write correct code. It saves one trivial line of > code in some, but not all, while loops, at the cost

Re: how to change os.popen4 to subprocess

2012-10-26 Thread skyworld
On Oct 27, 11:02 am, MRAB wrote: > On 2012-10-27 03:28, skyworld wrote:> Hi, > > > I'm new to python and I'm trying to porting some scripts from v0.96 to > > v2.0.1. A piece of code is like this: > > > cmd_h = os.popen4(env['SYSCMDLINE'])[1] > > > the system indicates the popen4 is deprecated and