A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
プログラムを非同期に起動しておいて、
何らかのタイミングで発生するデータを発生の都度に送りたいと言うことですかね。
import subprocess
with subprocess.Popen(["プログラム","引数1","引数2"],stdin=subprocess.PIPE,text=True) as p:
data = データを取得する処理()
p.stdin.write(f"{data}\n")
p.stdin.flush()
data = データを取得する処理()
p.stdin.write(f"{data}\n")
p.stdin.flush()
こんな感じで、Popenとstdin.writeを使います。
No.5
- 回答日時:
話がよく見えない。
subprocess.run(['python', 'process.py'])
を含んだプログラムを普通にコンソールから起動すれば
キーボードから input に入力できるけど、
どういう話ではない?
No.4
- 回答日時:
複数行の文字列を渡す場合です。
in_text = """
ABCD
EFGH
IJKL
""".strip()
subprocess.run(”process.py",input=in_text,text=True)
1回目のinputでABCDが取得されます。
2回目のinputでEFGHが取得されます。
以下同様
No.3
- 回答日時:
以下、サンプルです。
import subprocess
subprocess.run("python D:/goo/python/goo8/process.py",input="ABCD",text=True)
D:/goo/python/goo8/process.py は、こちらの環境でのパス名です。
あなたの環境にあわせて適切に設定してください。
input="ABCD",text=True
入力される文字列としてABCDを設定しています。
text=Trueは入力される値が文字列の場合、これを指定しておきます。
No.2
- 回答日時:
>数値やEnterを待つだけのものではありません。
ans = input("エンターキーを押してください。")
となっていた場合、
ansに画面から入力された文字列が返りますが、「この入力された文字列」をsubprocess関数で渡したいということですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) python:paiza.ioでのinput関数を用いた場合の入力場所 1 2022/07/13 15:52
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- その他(プログラミング・Web制作) Spyder上のPythonでinputが実行されません。 2 2022/08/15 11:57
- その他(プログラミング・Web制作) powershell で書いたプログラムでcd が動かない 5 2023/04/08 14:47
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- Ruby プログラミング 3 2023/06/09 14:30
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスの返す値
-
”送信ボタン” ”クリアボタン”...
-
hiddenで送ったデータの取り出し方
-
アンケートフォームで前のペー...
-
Error: No Recipient というエ...
-
別formのhidden項目を自form値...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
ディレクトリのファイル数取得
-
フリーズする原因
-
WEBページを強制的に横画面で見...
-
ラジオボタンを選択済みにする...
-
フォントサイズを変えるには?
-
MSPゴシックで、一番幅を取る文字
-
ブックマークからのアクセスを...
-
selectboxの画面遷移で、postデ...
-
CGI経由でのPDFファイルをダウ...
-
Yomi-Searchのカテゴリを縦並び...
-
tracert ができない原因
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスの返す値
-
別formのhidden項目を自form値...
-
チェックボックスでのvalue値の...
-
チェックボックスで選択した内...
-
Error: No Recipient というエ...
-
python subprocessに関する質問
-
CGIでチェックボックスを使...
-
CGIに渡しているパラメータを表...
-
掲示板の文字色指定について
-
hiddenで送ったデータの取り出し方
-
CGIで書き出したJavaScriptの動...
-
ランキング作成
-
クリップボードに記憶した文字...
-
フォームの内容を確認するペー...
-
CGIフォームから飛ばすメールで...
-
アンケートフォームで前のペー...
-
CGIフォームから飛ばすメールが...
-
VBAでWEBもっと見るを押して...
-
検索フォーム設置時のnameの文...
-
フォームの入力内容の後ろに文...
おすすめ情報
inputに渡すものは文字です。数値やEnterを待つだけのものではありません。
回答宜しくお願いします。
input()の引数の"エンターキーを押してください"は完全にミスです。申し訳ありません。
正しくは"文字を入力してください"です。
通常通りコマンドプロンプトでprocess.pyを動かすと、
Step1. 5秒何も起こらずに経過
↓
Step2. 文字を入力してくださいと聞かれる
↓
Step3. (使用者はここで文字を入力)
となります。
しかしsubprocessで動かすと、Step3の文字入力で何かを与えることができません。
それなのでここで入力する方法を教えていただきたいです。
分かりにくくて申し訳ありません。よろしくお願いします。
分かりにくくて申し訳ありません。補足を更に追加しましたので、是非ご回答お願いします。
僕の為に多くの時間を割いて返信してくださり有難う御座います。
何度も補足して申し訳ありませんが、
subprocessで実行し、
後からその実行したものに対しinputできる方法を教えてほしいです。
input()が複数だったり、後からinputしたい場合にもできる方法ということでもありますね。
つまり、こんな感じです↓
import subprocess
subprocess.run("process.py")
inputに対し何かを入力する関数("ABCD")
time.sleep(3)
inputに対し何かを入力する関数("EFGH")
最初のprocess.pyに、while文がついていると仮定すると分かりやすいかもしれません。
ないですかね?
何度も補足し、サンプルまで書いていただきましたが、申し訳ありません。
重ねてお詫び申し上げます。
すいません。なるべく目的を公開したくなかったのですが(パクられたくないのでね)
分かりやすくするため目的を公開します。
まず、Minecraftというゲームがありまして、
そのゲームはマルチプレイが可能なのですが、マルチプレイを行うにあたってサーバーを建てる必要があるのです。サーバーはコマンドプロンプト上でソフトを起動すれば建てられます。
それをsubprocessで起動をすると、確かに起動します。しかし、python側からそのサーバーに対しゲームの「コマンド」を送ることができないわけでございます。
これがなんで問題かと言いますと、
例えばTkinterでボタンを押したらコマンドを動かせるようにして利便性を上げようとした際に(このような運用を想定しているのですが、)できないわけなんですよ。
だから教えてほしいなと思います。
上から目線になって申し訳ありませんが、もう少々お付き合いください。