Re: determine if os.system() is done
On Wed, 07 Sep 2005 23:28:13 -0400, rumours say that Peter Hansen <[EMAIL PROTECTED]> might have written: >Martin P. Hellwig wrote: >> The only thing I am disappointed at his writing style, most likely he >> has a disrupted view on social acceptable behavior and communication. >> These skills might be still in development, so perhaps it is reasonable >> to give him a chance and wait until he is out of his puberty. >He's 37 years old! How long should one be given to mature? I (lots of female friends, actually :) believe many men remain in puberty for longer than that. -- TZOTZIOY, I speak England very best. "Dear Paul, please stop spamming us." The Corinthians -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Xah Lee wrote: > suppose i'm calling two system processes, one to unzip, and one to > “tail” to get the las t line. How can i determine when the first > process is done? > > Example: > > subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); > > last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], > stdout=subprocess.PIPE).communicate()[0] > > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. > > Xah > [EMAIL PROTECTED] > ∑ http://xahlee.org/ > I know you've found the answer to your question, however for the exact example you gave a much better solution comes to mind... import gzip log_file = gzip.open("access_log.4.gz") last_line = log_file.readlines()[-1] log_file.close() Regards Martin -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Peter Hansen wrote: > Martin P. Hellwig wrote: > >> The only thing I am disappointed at his writing style, most likely he >> has a disrupted view on social acceptable behavior and communication. >> These skills might be still in development, so perhaps it is >> reasonable to give him a chance and wait until he is out of his puberty. > > > He's 37 years old! How long should one be given to mature? > Yeah well, eeh I guess that rules out the development part. Although puberty can take a long time (according to my SO) :-) -- mph -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Thanks all. I found the answer, rather easily. To make a system call and wait for it, do: subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]).wait(); -- this post is archived at: http://xahlee.org/perl-python/system_calls.html Xah [EMAIL PROTECTED] ∑ http://xahlee.org/ Xah Lee wrote: > suppose i'm calling two system processes, one to unzip, and one to > “tail” to get the last line. How can i determine when the first > process is done? > > Example: > > subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); > > last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], > stdout=subprocess.PIPE).communicate()[0] > > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. > > Xah > [EMAIL PROTECTED] > ∑ http://xahlee.org/ -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Martin P. Hellwig wrote: > The only thing I am disappointed at his writing style, most likely he > has a disrupted view on social acceptable behavior and communication. > These skills might be still in development, so perhaps it is reasonable > to give him a chance and wait until he is out of his puberty. He's 37 years old! How long should one be given to mature? -Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Lars Gustäbel wrote: > [Fredrik Lundh] > >>han har försökt, men hans tourette tog överhanden: > > > IMHO it's more likely an Asperger's syndrome. > > http://en.wikipedia.org/wiki/Asperger_Syndrome > I disagree, in his writings I found no evidence of autisme. Actually most of it can be classified as being stubborn against better knowledge, what actually a common thing is. But he does ask the question and by this does admits he is not knowledged in that topic. The only thing I am disappointed at his writing style, most likely he has a disrupted view on social acceptable behavior and communication. These skills might be still in development, so perhaps it is reasonable to give him a chance and wait until he is out of his puberty. -- mph -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Xah Lee wrote: > suppose i'm calling two system processes, one to unzip, and one to > “tail” to get the last line. How can i determine when the first > process is done? > > Example: > > subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); > > last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], > stdout=subprocess.PIPE).communicate()[0] > > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. > > Xah > [EMAIL PROTECTED] > ∑ http://xahlee.org/ > As far as I can tell from the docs (worth reading), system(command) doesn't return until the process has completed. It would have to do some fancy footwork to return the exit code BEFORE the process had completed! Steve -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
[Fredrik Lundh] > han har försökt, men hans tourette tog överhanden: IMHO it's more likely an Asperger's syndrome. http://en.wikipedia.org/wiki/Asperger_Syndrome -- Lars Gustäbel [EMAIL PROTECTED] Any sufficiently advanced technology is indistinguishable from magic. (Arthur C. Clarke) -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
"Nainto" <[EMAIL PROTECTED]> wrote: > Yeah, I agree. The Python documentation just merey describes what > arguements a function can take not as much how to use the actual > function. yeah, that's a really relevant criticism when we're talking about a module that contains one function and one class, and for which the documentation contains *sixteen* examples. -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Yeah, I agree. The Python documentation just merey describes what arguements a function can take not as much how to use the actual function. -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Xah Lee wrote: > suppose i'm calling two system processes, one to unzip, and one to > “tail” to get the last line. How can i determine when the first > process is done? > > Example: > > subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); > > last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], > stdout=subprocess.PIPE).communicate()[0] > > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. > > Xah > [EMAIL PROTECTED] > ∑ http://xahlee.org/ > I think the idea is you wait for the first call to subprocess.call to finish before executing the second... http://docs.python.org/lib/node231.html call( *args, **kwargs) Run command with arguments. *Wait for command to complete*, then return the returncode attribute. The arguments are the same as for the Popen constructor. Example: retcode = call(["ls", "-l"]) -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Thomas Bellman wrote: >"Xah Lee" <[EMAIL PROTECTED]> writes: > > > >>suppose i'm calling two system processes, one to unzip, and one to >>tail to get the last line. How can i determine when the first >>process is done? >> >> > > > >>Example: >> >> > > > >>subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); >> >> > > > >>last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], >>stdout=subprocess.PIPE).communicate()[0] >> >> > > > >>of course, i can try workarounds something like os.system("gzip -d >>thiss.gz && tail thiss"), but i wish to know if there's non-hack way to >>determine when a system process is done. >> >> > >Have you tried reading the manual for the subprocess module? You >just *might* find the answer to your question if you look at what >you can do with Popen objects. > Oh, come on. Don't you know that all Python documentation is rubbish and not worth reading, written by IT idiots who throw around useless jargon and indulge in extreme forms of self-gratification? Someone of the caliber of Xah Lee would *never* stoop so low as to actually read the documentation. It is beneath him. Instead, he posts messages to a group of IT idiots who throw around useless jargon and indulge in extreme forms of self-gratification in posting answers to questions. JMJ -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Thomas Bellman wrote: > Have you tried reading the manual for the subprocess module? han har försökt, men hans tourette tog överhanden: http://mail.python.org/pipermail/python-list/2005-September/297642.html -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
"Xah Lee" <[EMAIL PROTECTED]> writes: > suppose i'm calling two system processes, one to unzip, and one to > tail to get the last line. How can i determine when the first > process is done? > Example: > subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); > last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], > stdout=subprocess.PIPE).communicate()[0] > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. Have you tried reading the manual for the subprocess module? You just *might* find the answer to your question if you look at what you can do with Popen objects. Actually, just learning about the exact semantics of the communicate() method might be enought to solve your problem. -- Thomas Bellman, Lysator Computer Club, Linköping University, Sweden "I refuse to have a battle of wits with an ! bellman @ lysator.liu.se unarmed person."! Make Love -- Nicht Wahr! -- http://mail.python.org/mailman/listinfo/python-list
Re: determine if os.system() is done
Xah Lee wrote: > of course, i can try workarounds something like os.system("gzip -d > thiss.gz && tail thiss"), but i wish to know if there's non-hack way to > determine when a system process is done. Well, if you use a function of the "popen" family, you get some kind of return value from the subprocess on your "output" pipe. You should be able to determine if your subprocess has terminated by examining (parsing) this output pipe. If you use os.system(), you should get a single return value (usually "None" or a error code) that you can use for this task. In both cases, you may have to use a loop (sleep(x)) to wait for the return value (and check it) from within your code. Have a look at the docu of the os.process module for details. (Maybe the newer "subprocess" module is a better choice...) HTH --- Alessandro Bottoni -- http://mail.python.org/mailman/listinfo/python-list
determine if os.system() is done
suppose i'm calling two system processes, one to unzip, and one to “tail” to get the last line. How can i determine when the first process is done? Example: subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]); last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"], stdout=subprocess.PIPE).communicate()[0] of course, i can try workarounds something like os.system("gzip -d thiss.gz && tail thiss"), but i wish to know if there's non-hack way to determine when a system process is done. Xah [EMAIL PROTECTED] ∑ http://xahlee.org/ -- http://mail.python.org/mailman/listinfo/python-list