Захват вывода subprocess.run () в Windows - PullRequest
0 голосов
/ 24 октября 2019

В Windows и Python3 я конвертирую некоторый старый код, который использует os.system() для использования subprocess.run(), но у меня возникают проблемы с захватом вывода в stdout и stderr.

Вот что я получаю изsimple dir c:\:

r = subprocess.run(['dir', 'c:\\'], check=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

r.stdout
Out[56]: '$GetCurrent\t\t  Program\\ Files\t       Users\t   cygwin64\n$Recycle.Bin\t\t  Program\\ Files\\ (x86)        WPy64-3740  findEm\nBOOTNXT\t\t\t  ProgramData\t\t       Windows\t   microchip\nBrother\t\t\t  Program_Files\t\t       antiword    pagefile.sys\nDocuments\\ and\\ Settings  Recovery\t\t       bin\t   swapfile.sys\nPerfLogs\t\t  System\\ Volume\\ Information  bootmgr\n'

type(r.stdout)
Out[57]: str

Что со всеми символами '\ t' (я полагаю) и \ n '(символами новой строки) в выходных данных?

Как преобразоватьстроки '\ t' и '\ n' в результате в настоящие вкладки и новые строки для печати?

1 Ответ

0 голосов
/ 24 октября 2019

Я получил такой пример, но с использованием sqlcmd:

from subprocess import Popen, PIPE, STDOUT

connection_string = 'sqlcmd -S %s -U %s -P %s -d %s -i %s -r0' %(self.host,self.user,self.password,self.db,file)
session = Popen(connection_string, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = session.communicate()
#Where stderr is the error
print(stderr)
#Where is the output 
print(stdout)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...