私は、Windows * .exeファイルを実行するためにsubprocess.Popenを使用するpythonスクリプトを用意しました。 1つを除くすべてのEXEが期待される出力を生成します。 print()を使用して印刷すると、問題の出力には、出力のすべての文字の間の空白が含まれます。Pythonのサブプロセスに空白が導入されました
これは、WindowsのコマンドラインでEXEを実行するときに、出力がどのように見えるかです:
Sysinternals Autoruns v13.51 - Autostart program viewer
Copyright (C) 2002-2015 Mark Russinovich
Sysinternals - www.sysinternals.com
H K L M \ S y s t e m \ C u r r e n t C o n t r o l S e t \ C o n t r o l \
r m i n a l S e r v e r \ W d s \ r d p w d \ S t a r t u p P r o g r a m
r d p c l i p
r d p c l i p
R D P C l i p M o n i t o r
M i c r o s o f t C o r p o r a t i o n
6 . 1 . 7 6 0 1 . 1 7 5 1 4
c : \ w i n d o w s \ s y s t e m 3 2 \ r d p c l i p . e x e
2 0/1 1/2 0 1 0 1 1 : 2 2
H K L M \ S O F T W A R E \ M i c r o s o f t \ W i n d o w s N T \ C u r
n t V e r s i o n \ W i n l o g o n \ U s e r i n i t
我々は明らかに空白を見ることができると:これは、Pythonで印刷したときに、それがどのように見えるかです
C:\Python27>autorunsc.exe /accepteula
Sysinternals Autoruns v13.51 - Autostart program viewer
Copyright (C) 2002-2015 Mark Russinovich
Sysinternals - www.sysinternals.com
HKLM\System\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\StartupPrograms
rdpclip
rdpclip
RDP Clip Monitor
Microsoft Corporation
6.1.7601.17514
c:\windows\system32\rdpclip.exe
20/11/2010 11:22
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
C:\Windows\system32\userinit.exe
興味深いのは、最初の数行にスペースが含まれていないことです。
p = subprocess.Popen('autorunsc.exe /accepteula', stderr=subprocess.STDOUT,
stdout=subprocess.PIPE, shell=True)
a=p.stdout.read()
print(a)
スペースから来ないとどのように私はそれらを削除するには:
これは、コードのですか?
最も可能性の高い答えは、内部的にUTF-8ではなくUTF-16を使用するMicrosoftツールの結果である可能性が最も高いと考えられます。 –
NULではなく0x20のASCIIスペースですか?私は後者を危険にさらします。 –
'stderr'を無視するとどうなりますか(' STDOUT'にルーティングしないでください) –