ubuntu@ubuntu:/home/ubuntuUser$ cat test.txt
This is a test file
used to validate file handling programs
#pyName: test.txt
this is the last line
ubuntu@ubuntu:/home/ubuntuUser$ cat test.txt | grep "#pyName"
#pyName: test.txt
ubuntu@ubuntu:/home/ubuntuUser$ "
#1 >>> a = subprocess.Popen(['cat test.txt'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
#2 >>> o, e = a.communicate(input='grep #pyName')
#3 >>> print o
#3 This is a test file
#3 used to validate file handling programs
#3 #pyName: test.txt
#3 this is the last line
#3
#3 >>>
質問:
Q1:ファイルに対するshell grepコマンドは一致した行だけを出力しますが、grepviasubprocessはファイル全体を出力します。どうしたの?
Q2:Communicate()を介して送信された入力は、最初のコマンド('cat test.txt')にどのように追加されますか?の後#2
に、最初のコマンドは「|」の後に通信からの入力文字列によって追加されますか?シェルコマンドは次のようになりcat test.txt | grep #pyName
ますか?