2012-11-28 43 views
2

我使用subprocess來運行命令(來自衍生的守護進程)並嘗試將結果寫入文件。從Popen得到的字符串是bytestring。如何在寫入文件之前將其格式化爲人類可讀的內容?使用python3.2python3.2 using subprocess.popen - 需要格式化結果標準輸出以寫入文件

曾嘗試:

print (x,file=o) 
f.write(str(rc.so)) 
print (str(rc.so) + "\n") 

沒有最終看起來可讀..

可疑代碼:

rc = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    x = rc.stdout.readlines() 
    rc.so, rc.se = rc.communicate() 
    with open(of,'w') as o, open(ef,'w') as e: 
    print (str(rc.so) + "\n",file=o) 
+1

你試過解碼呢? 'your_string.decode( 'UTF-8')'? – Blender

回答

3

您需要將其解碼:

my_byte_string.decode('utf-8') 

utf-8可能不是針對您的情況進行解碼的最佳選擇,但它是衆多可用選項之一。

使打印語句應該更像:

print (rc.so.decode('utf-8') + "\n",file=o) 
+1

您可能希望'sys.getdefaultencoding()'而不是'utf-8'在這裏。當然,假設其他程序行爲良好。 – abarnert