В чем разница между Python 2 & Python 3 и stdin.write? - PullRequest
0 голосов
/ 20 января 2020

Этот код должен запустить CMD и записать строку в файл. Это работает для Python 2, но не для Python 3?

import subprocess

self.process = subprocess.Popen("cmd.exe", shell=True,stdin = subprocess.PIPE,stdout = subprocess.PIPE,stderr = subprocess.PIPE,cwd=None,env=None)

Python 2 (Это работает)

self.process.stdin.write("echo It Works >> k:\\test_Python2.txt\n")

Python 3 (Это не работает, почему? ??)

self.process.stdin.write(("echo It Works >> k:\\test_Python3.txt\n").encode('ascii'))

1 Ответ

0 голосов
/ 20 января 2020

Я нашел это ... В Python 3 вы должны закрыть или грипп sh до конца sh запись

ex:

подпроцесс импорта

self.process = subprocess.Popen ("cmd.exe", shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = Нет, env = Нет)

self.process.stdin.write (("echo It Works >> k: \ test_ Python3 .txt \ n"). encode ())

Теперь вам нужно грипп sh или закрыть ...

self.process.stdin.close ()

self.process.stdin.flu sh ()

...