2

pexpectの使い方を学んでいます。私の目標は、ディレクトリのリストを取得し、pexpect を使用してそれらのディレクトリを別のフォルダーに再作成することです。ただし、複数のコマンドを python ループの pexpect 子に送信するにはどうすればよいですか? child.sendline()私にとってはうまくいきません= [。私は子供をリスポーンしていますが、それは適切な方法ではないようです。

import pexpect
child = pexpect.spawn("""bash -c "ls ~ -l | egrep '^d'""")
child.expect(pexpect.EOF)
tempList = child.before
tempList = tempList.strip()
tempList = tempList.split('\r\n')
listofnewfolders = []
for folder in tempList:
    listofnewfolders.append(folder.split(' ')[-1])
for folder in listofnewfolders:
    child.sendline("""bash -c 'mkdir {0}'""".format("~/newFolder/%s" % folder))
4

1 に答える 1

2

実行するとbash -c、bash は指定したコマンドを実行してから終了します。複数のコマンドを送信するには、次のようにする必要があります。

p = pexpect.spawn('bash')
p.expect(prompt_regex)
p.sendline('ls')  # For instance
p.expect(prompt_regex)
print(p.before)  # Get the output from the last command.
于 2013-10-28T01:08:39.620 に答える