On Wed, Oct 28, 2009 at 9:39 AM, banu <varun.nagp...@gmail.com> wrote: > Hi, > I am a novice in python. I was trying to write a simple script on > Linux (python 3.0) that does the following > > #cd directory > #ls -l > > I use the following code, but it doesn't work: > > import os > directory = '/etc' > pr = os.popen('cd %s' % directory,'w') > pr.close() > pr = os.popen('ls -l','w') # > prints the content of present folder and not '/etc' > pr.close() > So, here's what you're doing manually. 1) Open up a terminal, type "cd /etc". And then close that terminal 2) Open up a new terminal, type "ls -l" and wonder why it's not in /etc
> Can anyone suggest me how to fix this simple script? Also what is the > use of read(), readlines() and write() functions? The os and os.path modules contain higher-level functions than popen. Such as os.listdir and os.chdir (if you really want to change the current directory for the program). popen returns a file object. In your case, because you opened it in write mode, it's stdin so write will send things to the program (assuming it reads from stdin), and read/readlines are useless. If you were to open it in read mode, pr would be stdout and you would use pr.read() or pr.readlines() to get your directory list instead of having it print out to the terminal. Or you could use os.popen2 or subprocess.Popen (the newer, preferred, more complicated way) and get both at once. > > Now, I also read in the online python documentation that os.popen is > deprecated and no longer recommended in pyhton 3.0. Instead they ask > to use subprocess.popen. I am not able to figure out how to accomplish > my task with subprocess.poepn also. Can anyone suggest please? > For this example, where you just want to print stuff out, just use subprocess.call(['ls','-l']) For more complicated examples: pr = subprocess.Popen(['ls','-l'],stdout=subprocess.PIPE) file_list = pr.stdout.readlines() > > Regards > Varun > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list