私はPython 3.5でGITフックをやっています。 Pythonスクリプトは、read
コマンドを使用してユーザーからの入力を読み取るBashスクリプトを呼び出します。GITフック - > Python - > Bash:ユーザー入力の読み方?
bashスクリプトは、Pythonスクリプトを直接呼び出すときにも動作しますが、GITがPythonで書かれたフックを実行すると、ユーザーからのユーザー入力が要求されないため期待どおりに動作しません。
bashスクリプト:
#!/usr/bin/env bash
echo -n "Question? [Y/n]: "
read REPLY
GITフック(Pythonスクリプト):私はPythonスクリプトを実行すると
#!/usr/bin/env python3
from subprocess import Popen, PIPE
proc = Popen('/path/to/myscript.sh', shell=True, stderr=PIPE, stdout=PIPE)
stdout_raw, stderr_raw= proc.communicate()
、バッシュのread
が入力を待っているように見える、と私だけはありませんget:
b'\nQuestion? [Y/n]: \n'
Pythonから呼び出されたときにbashスクリプトに入力を読み込ませる方法を教えてください。追加
print(stdout_raw)
print(stderr_raw)
@DYZ>デフォルトの動作にする必要があります。* "デフォルト設定が[なし]の場合、リダイレクトは行われません。子供のファイルハンドルは親から継承されます "* – spectras
@DYZは' stdin = sys.stdin'を追加しても何もしないようです...まだ入力を入力する機会はありません – arod
@arod>あなたのコードをコピー貼り付け、 '.'が' $ PATH'にあることを前提としています(あなたはそれをしてはいけないが、それは悪い考えです) – spectras