Hi, all,

    I have the shell command like this:

   sfdisk -uM /dev/sdb << EOT
   ,1000,83
   ,,83
   EOT


I have tried subprocess.Popen, pexpect.spawn and os.popen, but none of these works, but when I type this shell command in shell, it is works fine. I wonder how to emulate this type of behavior in python , and if someone can figure out the reason why?

    The sample code of subprocess.Popen is:

    command = ["sfdisk", "-uM",  target, "<<EOT", "\r\n",
                ",", 1000, ",", "83", "\r\n",
                ",", ",", "83", "\r\n", "EOT", "\r\n"]

    pobj = subprocess.Popen (command, bufsize=1, \
                        stderr=subprocess.PIPE, stdout=subprocess.PIPE)

    res = pobj.stderr.readline ()
    if res is not None and pobj.returncode != 0:
        observer.ShowProgress (u"对设备 %s 分区失败!" % target)
        return False

    and pexpect code is:

    child = pexpect.spawn ("sfdisk -uM /dev/sdb <<EOT")
    child.sendline (....)
    child.sendline (....)
    child.sendline (....)

    and os.popen like this:

        os.popen ("sfdisk -uM /dev/sdb <<EOT\n,1000,83\n,,83\nEOT\n")

    I tried "\r\n", and it doesn't work either.


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to