簡體   English   中英

使用retrbinrary()的看似隨機的錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM