On Tue, May 8, 2012 at 8:39 AM, Rogelio <[email protected]> wrote: > I am wrapping a Python wrapper script to "wc -l" (count lines) of a > list of IP addresses > > ******************************************* > > import subprocess > IPcount = subprocess.call(['wc -l file.txt | awk \'{print $1}\''], shell=True) > print "You have",IPcount,"IP addresses that are alive." > > ******************************************* > > I get the following output > > ******************************************* > 46 > You have 0 IP addresses that are alive. > ******************************************* > > Why does IPcount not equal 46? Is this what the stout is for?
You can do this: http://docs.python.org/py3k/library/subprocess.html#replacing-bin-sh-shell-backquote However, for this simple action of counting lines in a file, I recommend you do it directly in python: def count_lines(filename): with open(f, 'r') as in_stream: return len(in_stream.readlines()) The count_lines function takes a filename and returns the number of lines in that file. This way you avoid the problems with shell metacharacters when using shell=True, mentioned in the subprocess documentation: http://docs.python.org/py3k/library/subprocess.html#frequently-used-arguments -- regards, kushal _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
