我正在運行一個腳本,在cron作業上失敗了很多。它有編碼問題(UTF等),我試圖排序和讓我的頭。我已經完成了這個腳本,當腳本出現時,腳本會將它的錯誤寫入csv,但它沒有問題,但它不會告訴我錯誤發生在哪條線上,所以我正在努力找出在哪裏把一些.encode('utf-8')
來解決問題。任何人都可以告訴我,如果有一種方法可以添加到我的錯誤寫入函數來獲取錯誤的行嗎?如何在Python中寫出錯誤異常(以及實際錯誤)的行
我使用捕捉的錯誤(其它代碼的位太)的功能如下...
def error_output(error):
t = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
new_data = [t, error]
f = open('outputs/errors.csv', 'a')
csv.writer(f, lineterminator='\n').writerows([new_data])
f.close()
...和腳本使用這樣說:
if some condition:
try:
something
except Exception as e:
error_output(e)
。 ..this工作得很好,給我一個CSV,告訴我的東西,如:
2017-08-19 23:58:47 'ascii' codec can't encode character u'\u2019' in position 69: ordinal not in range(128)
2017-08-20 00:10:46 Failed to send request: 'utf8' codec can't decode byte 0xf0 in position 136: invalid continuation byte
...但我想是讓不僅僅是TEC更多對錯誤的詳細描述,我想知道它發生的代碼在哪裏,因爲我已經用.encode('utf-8')
對所有的字符串進行了插入,並且它仍然像這樣失敗,所以我需要知道錯誤的具體位置(就像我如果我是從終端運行腳本的話 - 我有時會這樣做,但錯誤只發生在某些時候,可能是在處理陌生人物或表情符號等時)。
任何幫助大量讚賞,因爲這是一個令人沮喪的問題。謝謝!
嗨。我知道這並不能直接回答你的問題,但你爲什麼不嘗試使用調試器並逐步解決有問題的功能 - 在每一步你都能看到變量的值,並且你會看到在哪個地方你會得到一個例外。希望有幫助:)(我使用PyCharm進行開發,它提供了一個調試接口) –
而不是你可以使用日誌功能 - https://docs.python.org/2/library/logging.html。不需要重寫正在工作的工具。至於位置,請參閱Danil給你的答案。 – droravr
感謝您的評論,但由於篇幅較長,這是我需要解決此特定問題的方式,因爲腳本需要不斷運行,我只想在此期間發現錯誤。將來我會嘗試使用日誌記錄。 –