[英]Seemingly Random errors in writing with retrbinrary()
我正在嘗試從ftp服務器上下載文本文件並正常工作,但是,當我對數據進行合理檢查時,它似乎隨機地錯讀了數據,並在期望的情況下寫了兩行,例如:
DYO8 6 GB1925 5 20582
DYO8 8 GB1882 1 4717
DYO8 8 GB744
2 12003
DYO8 8 GB1925 3 15199
DYO8 8 GB1970 4 19102
我看不出是什么原因造成的。 但是我期望這樣:
DYO8 6 GB1925 5 20582
DYO8 8 GB1882 1 4717
DYO8 8 GB7442 1 2003
DYO8 8 GB1925 3 15199
DYO8 8 GB1970 4 19102
我的代碼在下面,newfiles是要讀取的文件的列表
def writeline(line):
file.write(line + "\n")
for filename in newfiles:
local_filename = os.path.join(r"c:\local\path", filename)
try:
file = open(local_filename, "wb")
ftp.retrbinary('RETR %s' % filename, writeline)
except ftplib.error_perm:
print 'ERROR: cannot read file "%s"' % local_filename
file.close()
file.close()
剛剛有一位同事的建議,這可能是由於整個讀取和ftp服務器問題。 因為它捕獲並通過一個特殊字符發送,或者使該消息讀到腦中放屁並開始新的一行。 這會幫助任何人看到可能性嗎? 也許在繼續之前檢查線是否正確的方法?
任何幫助,將不勝感激。 謝謝。
我回頭看了看用retrbinary()編寫的替代方法,然后擺脫了整個單獨的函數。 由於我仍然不知道是什么原因導致了最初的問題,所以我無法解釋為什么它起作用,但是我可以看到它確實起作用。 當前代碼:
for filename in newfiles:
local_filename = os.path.join(r"c:\upsaccesspoints", filename)
try:
file = open(local_filename, "wb")
ftp.retrbinary('RETR %s' % filename, file.write)
except ftplib.error_perm:
print 'ERROR: cannot read file "%s"' % local_filename
file.close()
file.close()
我想說的是,這是我最后一次從互聯網上獲得關於如何編碼的建議,但這是一個公然的謊言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.