teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

説明追加

2021/03/06 09:47

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -2,4 +2,67 @@
2
2
 
3
3
  無理やりやるとしたら、そのファイルの中で自分自身のファイルを別名でコピーしてimportすれば、できないことはありません。
4
4
 
5
- ループを行いたくない理由は何かあるのでしょうか。
5
+ ループを行いたくない理由は何かあるのでしょうか。
6
+
7
+ 理由はなんとなくわかりました。
8
+
9
+ subprocessの使い方の例です。
10
+
11
+ 同一フォルダ内に master.py と worker.py を置いてあります
12
+ master.pyの中身です。
13
+
14
+ ```master
15
+ import subprocess
16
+
17
+ def check_login_id(x):
18
+ return True
19
+
20
+ def check_login_pass(x):
21
+ return True
22
+
23
+ if __name__ == '__main__':
24
+
25
+ WORKER = "worker.py"
26
+
27
+ while True:
28
+ login_id = input('enter login_id: ')
29
+ if login_id in 'eEqQ':
30
+ exit(0)
31
+ if check_login_id(login_id) == False:
32
+ exit(1)
33
+ login_pass = input('enter login_pass : ')
34
+ if check_login_pass(login_pass) == False:
35
+ exit(1)
36
+ subprocess.run(["python", WORKER, login_id, login_pass])
37
+ ```
38
+
39
+ worker.pyの中身です。
40
+
41
+ ```worker
42
+ import sys
43
+
44
+ login_id = sys.argv[1]
45
+ login_pass = sys.argv[2]
46
+
47
+ print('login_id =', login_id)
48
+ print('login_pass =', login_pass)
49
+
50
+ print('COMPLETE')
51
+ ```
52
+ 事項例は以下です。
53
+ ```shell
54
+ (base) subprocess> python master.py
55
+ enter login_id: aaa
56
+ enter login_pass : bbb
57
+ login_id = aaa
58
+ login_pass = bbb
59
+ COMPLETE
60
+ enter login_id: xxx
61
+ enter login_pass : yyy
62
+ login_id = xxx
63
+ login_pass = yyy
64
+ COMPLETE
65
+ enter login_id: e
66
+ (base) subprocess>
67
+ ```
68
+ このように、パラメータの設定はmaster.pyで行い、実作業はworkerが実行するようにしてみてはどうでしょうか。

1

変更

2021/03/06 09:47

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -1,1 +1,5 @@
1
+ import[自身]をやっても、一回しかできなくて、二回目は動かないですね。
2
+
1
- そういうこをせずに、ファイル(必要があれば回数を決めて)ループさせるが普通です。
3
+ 無理やりやるしたらそのファイルの中自分自身ファイルを別名コピーしてimportれば、できないことはありません
4
+
5
+ ループを行いたくない理由は何かあるのでしょうか。