Предположим, у меня есть два сценария:
#script1.py
import subprocess
numbers = ['1', '2', '3']
for number in numbers:
p = subprocess.Popen('script2.py', number)
Другой сценарий:
#script2.py
import subprocess
from script1 import *
number = sys.argv[1]
print(number)
Сообщение об ошибке (когда я запускаю script1.py):
Traceback (most recent call last):
File "script1.py", line 6, in <module>
p = subprocess.Popen('script2.py', number)
File "C:\Users\hacke\AppData\Local\Programs\Python\Python38-
32\lib\subprocess.py", line 753, in __init__
raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
Я хочу, чтобы эта программа открыла 3 подпроцесса, где в 1 номере подпроцесса = '1', еще один номер подпроцесса = '2' и еще один номер = '3'. Я просмотрел документацию python и переполнение стека и пока не могу найти то, что ищу.
ПРИМЕЧАНИЕ: Я использую этот код для более крупной программы, использующей tkinter GUI и строка кода subprocess.Popen, когда она выполняется, открывает другое окно tkinter для каждого подпроцесса, а не просто запускает другой скрипт.
Вся помощь приветствуется, и я благодарю весь этот ответ.
ОБНОВЛЕНИЕ: Когда я выполняю скрипт следующим образом:
numbers = ['1', '2', '3']
for number in numbers:
p = subprocess.Popen(['python', 'script2.py', number])
Он правильно передает переменные в script2.py, но бесконечно исполняет скрипт, что приводит к выводу:
1
2
3
1
2
3(continuing the pattern)
Не совсем уверен, как это исправить. Это заканчивает тем, что разбил мой р c.