これはバグですか?sys.argvにコマンドラインで引用符を使用していないのはなぜですか?
python tmp.py find . -name '*.py'
実際の出力:
['tmp.py', 'find', '.', '-name', '*.py']
予想される出力:呼び出され
#!/usr/bin/env python3.6
# filename: tmp.py
import sys
print(sys.argv)
['tmp.py', 'find', '.', '-name', "'*.py'"]
は、実際の出力内の引用の欠如に注意してください。あなたのシェルのpythonに引数を渡す前に、引用符が削除されるため
なぜあなたは文字通りの引用符を期待していますか? –
私はなぜいけませんか?私はPythonに何かをさせるのではなく、実際にコマンドライン上にあるものを抽出するよう求めています。 –
... 'subprocess.Popen(['foo'、 'hello'])'を呼び出すと、 'foo'がPythonの引用符を見るのを期待していませんリテラル引数 'hello'。同様に、純粋にシェルシンタックスであり、実行されるソフトウェアに渡されない引用符を他のプログラムが見ることは期待できません。 –