天天看點

python ftp下載下傳檔案不完整_python從ftp下載下傳檔案時問題解決

python從ftp下載下傳檔案代碼如下

import os

from ftplib import FTP

def ftp_connect(host, username, password):

ftp = FTP()

# ftp.set_debuglevel(2)

ftp.connect(host, 21)

ftp.login(username, password)

return ftp

"""

從ftp伺服器下載下傳檔案

"""

def download_file(ftp, remotepath, localpath):

bufsize = 1024

fp = open(localpath, 'wb')

ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)

ftp.set_debuglevel(0)

fp.close()

"""

從本地上傳檔案到ftp

"""

def upload_file(ftp, remotepath, localpath):

bufsize = 1024

fp = open(localpath, 'rb')

ftp.storbinary('STOR' + remotepath, fp, bufsize)

ftp.set_debuglevel(0)

fp.close()

if __name__ == "__main__":

ftp = ftp_connect("130.17.177.140", "ftp", "ftp0")

print(ftp)

download_file(ftp, r"/工作站文檔統一存放位置/kpi_day_report/LTE/2019-11-09/LTE_KPI_質差小區日報_2019-11-09_萊蕪.xlsx", r"D:/abc/LTE_KPI_質差小區日報_2019-11-09_萊蕪.xlsx")

#調用本地播放器播放下載下傳的視訊

#os.system('start "C:\Program Files\Windows Media Player\wmplayer.exe" "C:/Users/Administrator/Desktop/test.mp4"')

#upload_file(ftp, r"IMG_0682.jpg", "E:\我們的照片\建立檔案夾\IMG_0682.jpg")

ftp.quit()

使用ftplib上傳檔案的時候,遇到包含中文的檔案名報錯UnicodeEncodeError: 'latin-1' codec can't encode charactersin position 4-5: ordinal not in range(256)

查閱了很多網上的資料,發現在python自帶的子產品ftplib.py中定義了編碼模式

vim /usr/local/python3/lib/python3.6/ftplib.py

初始的編碼模式是

coding = 'latin-1'

後來筆者把他改成了‘utf-8’

但是問題并不能解決

最後筆者狠下心來把他改成了

encoding = "GB2312"

問題迎刃而解