我有一個python腳本,它由多個正在運行的線程組成,並且它們有打印輸出來告訴任何連接失敗,例如,未能打開端口,連接失敗等將所有python文件輸出重定向到tinydb
我試過基本:
import sys
sys.stdout = open('file', 'w')
,但沒有被保存到文件中。我試圖獲得系統打印輸出並將其保存到tinydb。我正在嘗試將所有輸出記錄到tinydb中。我怎樣才能做到這一點?
是否可以連續檢索所有打印輸出並使用tinydb將其保存到json文件中?
我有一個python腳本,它由多個正在運行的線程組成,並且它們有打印輸出來告訴任何連接失敗,例如,未能打開端口,連接失敗等將所有python文件輸出重定向到tinydb
我試過基本:
import sys
sys.stdout = open('file', 'w')
,但沒有被保存到文件中。我試圖獲得系統打印輸出並將其保存到tinydb。我正在嘗試將所有輸出記錄到tinydb中。我怎樣才能做到這一點?
是否可以連續檢索所有打印輸出並使用tinydb將其保存到json文件中?
在python3,你有,如果你想爲文件說,到stdout覆蓋使用print
有一個文件參數和記錄了這樣一個問題:
這給你的基本構建塊爲了達到你要找的東西。你不是真的解釋你如何期待與tinydb使用什麼...
這就是說,您的打印通話應該是這樣的:
fake_stdout = open('file', 'w')
print(data, file=fake_stdout)
就是這樣。
如果由於某種原因,你有很多的print語句的改變,你可以做這樣的事情:
與該得到初始化的線程局部變量的模塊。下面看一下這個問題:Thread local storage in Python
然後,當你有你的模塊設置,您可以添加在您的所有文件這一說法,需要一個不同的打印標準輸出
from special_print import local_print as print
所有你需要做的就是定義一個您special_print模塊,然後把它定義在ThreadLocal變量當一個新線程是這樣開始:
def print_factory(fout):
def local_print(arg):
print(arg, file=fout)
return local_print
在每一個新的線程運行是這樣的:
import special_print
special_print.local_print = print_factory(fake_stdout)
然後,當您在每個線程中導入這個print
方法時,它們會將數據正確地輸出到您在每個線程中定義的fake_stdout。
這是一個python2或python3的問題?你怎麼實際上'打印'。你的線程是如何開始的? –
不完全重複但相關https://stackoverflow.com/questions/9316023/python-2-7-print-to-file –
這是一個python3問題。使用基本的'print(「....」)'打印'。線程開始使用'threading.Thread()' –