IPC

Discussion in 'Python' started by Yannick Turgeon, Jul 27, 2004.

  1. Hi,

    I'm relatively new to Python. I'm using 2.3.4 on W2K.

    What I want to do is to start a program and interact with it. Say my program
    is FTP, I want to start FTP then send the commande "open x.x.x.x" then look
    for the answer (if the connection is opened or not), then do something
    dependant of the success or error.

    I tried with popen3. The problem I got with this: it seems that I have to
    end the program before being able to read the output. Or maybe I'm not using
    it correctly. I do test the communication with FTP exec. but it will be a
    custom program in real. Here is my code:


    def test(self):
    cmd = "ftp"
    r, w, e = popen2.popen3(cmd)

    cmd = "?\n" # A simple FTP commande
    w.write(cmd)
    w.flush()

    # That is what I would like but it's hanging here. I have to remove
    this group and read at the end.
    for line in e.readlines():
    # Do something conditionnal to the result of "line"
    pass
    for line in r.readlines():
    # Do something conditionnal to the result of "line"
    pass


    cmd = "quit\n"
    w.write(cmd)
    w.flush()

    for line in e.readlines():
    print line
    for line in r.readlines():
    print line

    w.close()
    r.close()
    e.close()
    ----------------------

    Anybody can help? Thanks for your time.

    Yannick
    Yannick Turgeon, Jul 27, 2004
    #1
    1. Advertising

  2. Yannick Turgeon

    Larry Bates Guest

    Python has built in support for ftp (see ftplib)
    use it instead of trying to "communicate" with
    external FTP program.

    http://www.python.org/doc/current/lib/module-ftplib.html

    You can catch any exceptions (like failure to connect)
    by using python try:/except: blocks.

    HTH,
    Larry Bates
    Syscon, Inc.

    "Yannick Turgeon" <> wrote in message
    news:Z6wNc.21572$...
    > Hi,
    >
    > I'm relatively new to Python. I'm using 2.3.4 on W2K.
    >
    > What I want to do is to start a program and interact with it. Say my

    program
    > is FTP, I want to start FTP then send the commande "open x.x.x.x" then

    look
    > for the answer (if the connection is opened or not), then do something
    > dependant of the success or error.
    >
    > I tried with popen3. The problem I got with this: it seems that I have to
    > end the program before being able to read the output. Or maybe I'm not

    using
    > it correctly. I do test the communication with FTP exec. but it will be a
    > custom program in real. Here is my code:
    >
    >
    > def test(self):
    > cmd = "ftp"
    > r, w, e = popen2.popen3(cmd)
    >
    > cmd = "?\n" # A simple FTP commande
    > w.write(cmd)
    > w.flush()
    >
    > # That is what I would like but it's hanging here. I have to

    remove
    > this group and read at the end.
    > for line in e.readlines():
    > # Do something conditionnal to the result of "line"
    > pass
    > for line in r.readlines():
    > # Do something conditionnal to the result of "line"
    > pass
    >
    >
    > cmd = "quit\n"
    > w.write(cmd)
    > w.flush()
    >
    > for line in e.readlines():
    > print line
    > for line in r.readlines():
    > print line
    >
    > w.close()
    > r.close()
    > e.close()
    > ----------------------
    >
    > Anybody can help? Thanks for your time.
    >
    > Yannick
    >
    >
    Larry Bates, Jul 27, 2004
    #2
    1. Advertising

  3. Larry,

    As I said, I use FTP only to test the IPC and give here a known example.
    It's in fact with a custom program that I have to communicate.

    Any help in this regard?

    Yannick

    "Larry Bates" <> wrote in message
    news:...
    > Python has built in support for ftp (see ftplib)
    > use it instead of trying to "communicate" with
    > external FTP program.
    >
    > http://www.python.org/doc/current/lib/module-ftplib.html
    >
    > You can catch any exceptions (like failure to connect)
    > by using python try:/except: blocks.
    >
    > HTH,
    > Larry Bates
    > Syscon, Inc.
    >
    > "Yannick Turgeon" <> wrote in message
    > news:Z6wNc.21572$...
    > > Hi,
    > >
    > > I'm relatively new to Python. I'm using 2.3.4 on W2K.
    > >
    > > What I want to do is to start a program and interact with it. Say my

    > program
    > > is FTP, I want to start FTP then send the commande "open x.x.x.x" then

    > look
    > > for the answer (if the connection is opened or not), then do something
    > > dependant of the success or error.
    > >
    > > I tried with popen3. The problem I got with this: it seems that I have

    to
    > > end the program before being able to read the output. Or maybe I'm not

    > using
    > > it correctly. I do test the communication with FTP exec. but it will be

    a
    > > custom program in real. Here is my code:
    > >
    > >
    > > def test(self):
    > > cmd = "ftp"
    > > r, w, e = popen2.popen3(cmd)
    > >
    > > cmd = "?\n" # A simple FTP commande
    > > w.write(cmd)
    > > w.flush()
    > >
    > > # That is what I would like but it's hanging here. I have to

    > remove
    > > this group and read at the end.
    > > for line in e.readlines():
    > > # Do something conditionnal to the result of "line"
    > > pass
    > > for line in r.readlines():
    > > # Do something conditionnal to the result of "line"
    > > pass
    > >
    > >
    > > cmd = "quit\n"
    > > w.write(cmd)
    > > w.flush()
    > >
    > > for line in e.readlines():
    > > print line
    > > for line in r.readlines():
    > > print line
    > >
    > > w.close()
    > > r.close()
    > > e.close()
    > > ----------------------
    > >
    > > Anybody can help? Thanks for your time.
    > >
    > > Yannick
    > >
    > >

    >
    >
    Yannick Turgeon, Jul 27, 2004
    #3
  4. Yannick Turgeon wrote:

    > As I said, I use FTP only to test the IPC and give here a known example.
    > It's in fact with a custom program that I have to communicate.
    >
    > Any help in this regard?


    google('python expect interactive') # expect is the key word here

    hth,

    f
    Fernando Perez, Jul 28, 2004
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. piyush
    Replies:
    0
    Views:
    1,834
    piyush
    Jul 14, 2004
  2. gary
    Replies:
    3
    Views:
    530
    Steve Grazzini
    Sep 18, 2003
  3. Brian Hann

    IPC::Run and hanging pipes

    Brian Hann, Dec 8, 2003, in forum: Perl
    Replies:
    1
    Views:
    764
    Brian Hann
    Dec 11, 2003
  4. Antonio
    Replies:
    0
    Views:
    644
    Antonio
    May 17, 2004
  5. Dave Newberry
    Replies:
    0
    Views:
    639
    Dave Newberry
    Oct 17, 2004
Loading...

Share This Page