Ничего не происходит после subprocess.stdout.readline()/subprocess.stdout.read()Python

Программы на Python
Anonymous
Ничего не происходит после subprocess.stdout.readline()/subprocess.stdout.read()

Сообщение Anonymous »

Из Python я пытаюсь управлять cmd в Cosnolly, вот мой код:

Код: Выделить всё

cmd_process = subprocess.Popen(["cmd"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='cp866')

cmd_process.stdin.write('E:')
cmd_process.stdin.flush()

cmd_process.stdin.write('dir\n')
cmd_process.stdin.flush()
А дальше я не знаю, что делать. Если я напишу:

Код: Выделить всё

print(cmd_process.stdout.read())
ничего не происходит, ничего не печатается в cmd и консоль cmd зависает. Поэтому я не могу ничего напечатать в консоли, и это похоже на вечный цикл
Я попробую:

Код: Выделить всё

for i in range(10):
print(cmd_process.stdout.readline())

print('after for loop')
На самом деле он работает нормально, и после этого цикла for печатается «после цикла for». Но если я пишу:

Код: Выделить всё

for i in range(1_000):
print(cmd_process.stdout.readline())

print('after for loop') # 

Подробнее здесь: [url]https://stackoverflow.com/questions/78521839/nothing-happens-after-subprocess-stdout-readline-subprocess-stdout-read[/url]

Вернуться в «Python»