2017-08-04 36 views
0

我試圖運行在Python在Windows PowerShell命令:PowerShell的生成的文本文件中的零件拆分線(S)

import subprocess, os, sys 

subprocess.check_call(['powershell.exe', 'Get-ItemProperty HKLM:/Software/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, InstallLocation > "C:/Program Files/softwarelist.txt"']) 

然而,在sys.stdout.write() -ing用UTF-16編碼所創建的文件(否則它具有空間和兼容性問題所有的地方),我招呼着以下幾點:

DisplayName  : Adobe Flash Player 26 NPAPI 

DisplayVersion : 26.0.0.137 

Publisher  : Adobe Systems Incorporated 

InstallDate  : 

InstallLocation : 


DisplayName  : Adobe Flash Player 26 PPAPI 

DisplayVersion : 26.0.0.137 

Publisher  : Adobe Systems Incorporated 

InstallDate  : 

InstallLocation : 


DisplayName  : Agenda At Once 3.3.3 

DisplayVersion : 3.3.3 

Publisher  : Dataland Software 

InstallDate  : 20161106 

InstallLocation : E:\Applications for Work\PIM and Projects\Agenda at Once 
        PIM\Agenda at Once Components\Agenda At Once\ 

一切都是因爲我希望它是,除了一兩件事:去年InstallLocation串被分成兩個行(在「PIM」)在文本文件中。

有沒有辦法避免這種情況發生?

+0

我會在PowerShell中使用'Export-Csv'來寫入文件,並使用Python中的'csv'模塊來讀取結果。 – TessellatingHeckler

+1

爲什麼你使用Python(腳本)來調用另一種腳本語言?在一個語言實現的一切,讓生活在自己 – TheIncorrigible1

+0

我[TheIncorrigible1]同意更容易(https://stackoverflow.com/users/8188846/theincorrigible1),無論如何,請嘗試使用'' - 加入「'r'n」''使其成爲一個單一的字符串而不是數組:''subprocess.check_call(['powershell.exe','(Get-ItemProperty HKLM:/ Software/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/* | Select-Object DisplayName ,DisplayVersion,出版社,InstallDate,INSTALLLOCATION) - 加入 「'r'n」> 「C:/ Program Files文件/ softwarelist.txt」'])'' – iRon

回答