亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python ftplib上傳文件名亂碼的解決辦法

 更新時間:2025年04月16日 11:02:47   作者:handsome1234  
本文主要介紹了python ftplib上傳文件名亂碼的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

公司安排我用RPA把各電商平臺昨天直播和視頻相關的曝光、銷售等數據下載下來,我用rpa基本一個星期完成了,最后用影刀RPA自帶的ftp文件上傳工具,都指定的ftp服務器上,用RPA上傳后,文件名都是亂碼,默認RPA內嵌的ftplib的默認編碼是拉丁文編碼,上傳中文就是亂碼,默認組件又沒有其他設置(比方說編碼方面),于是被迫放棄現場的組件,自行編寫代碼以期解決,百度了一下:

1、嘗試上傳前,按照提示把文件名轉成utf-8,

def upload(f, remote_path, local_path):
    fp = open(local_path, "rb") #,encoding='utf-8'
    buf_size = 1024
    # f.storbinary("STOR {}".format(remote_path), fp, buf_size)
    # f.storbinary("STOR {}"+remote_path, fp, buf_size)
    # f.storbinary("STOR {}".format(remote_path)+r"/20250413_抖音_XXX服飾旗艦店_視頻合作視頻數據_1744606680.xlsx", fp, buf_size)
    # f.storbinary("STOR "+remote_path+r"/aa.xls", fp, buf_size)   #單文件ok
    filenam2=local_path[local_path.rfind('\\')+1:].strip()
    print(filenam2+"#"+remote_path+"#"+local_path)
    filenam3=filenam2.encode('utf-8').decode('iso-8859-1')
    f.storbinary("STOR "+remote_path+filenam3, fp, buf_size)


    fp.close()
    

亂碼還在,不起作用。

2、網上有說改源碼的,我這里是用影刀RPA作的,找他的源碼,電腦D盤搜索中。最后在我改源碼前,找到了更好的辦法,故這個方法沒有再試了。

3、把編碼設置成通用的utf-8還是不行

4、把編碼設置成通用的拉丁文還是不行:

ftp.encoding="iso-8859-1"

5、看文檔說可以使用paramiko 我安裝完了,測試:

def upload_file_via_ftp(hostname, port, username, password, local_file_path, remote_file_path):
    # 創(chuàng)建SSH客戶端實例
    client = paramiko.SSHClient()
    # 自動添加策略,保存服務器的主機名和密鑰信息
    # client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    try:
        # 連接到服務器
        client.connect(hostname, port, username, password)
        
        # 使用SFTPClient進行文件傳輸
        sftp = client.open_sftp()
        sftp.put(local_file_path, remote_file_path)
        print(f"文件 {local_file_path} 已成功上傳到 {remote_file_path}")
        
        # 關閉SFTP連接
        sftp.close()
    except Exception as e:
        print(f"上傳文件時發(fā)生錯誤: {e}")
    finally:
        # 關閉SSH連接
        client.close()

報: 

Error reading SSH protocol banner

不知道ftp服務器上用哪個軟件設置的ftp功能,不知道知不知支持ssh,如果不支持的話,我就是白費勁。

6、又看文檔說 pysftp 支持中文,我安裝,測試:

def main(args):
    with pysftp.Connection(glv['gvarFtpSerIP'], username=glv['gvarFtpUid'], password=glv['gvarFtpPs'],port=30000) as sftp:
    
    # sftp.get('遠程中文文件.txt', '本地文件.txt')  # 下載
        sftp.put(r"C:\20250413_抖音_XXX服飾旗艦店_視頻合作視頻數據_1744606680.xlsx", '20250413_抖音_XXXX服飾旗艦店_視頻合作視頻數據_1744606680.xlsx')  # 上傳
        sftp.close()

報:'Connection' object has no attribute '_sftp_live'  ,查了一圈,沒找到類似login 和 openftp的方法,暫時沒有好的辦法

7、又轉而看看內嵌的ftplib,之前都是設置 utf-8,我靈機一動,為啥不設置 gbk呢?于是測試一下,效果可以。

最后代碼如下:

from ftplib import FTP


def upload(f, remote_path, local_path):
    fp = open(local_path, "rb") #,encoding='utf-8'
    buf_size = 1024
    # f.storbinary("STOR "+remote_path+r"/aa.xls", fp, buf_size)   #純英文文件名ok
    filenam2=local_path[local_path.rfind('\\')+1:].strip()
    print(filenam2+"#"+remote_path+"#"+local_path)
    f.storbinary("STOR "+remote_path+filenam2, fp, buf_size)   

    fp.close()


def main(args):
    ftp = FTP()
    ftp.encoding='gbk'#  ok  這里最重要

    ftp.connect(glv['gvarFtpSerIP'], 30000)      # 第一個參數可以是ftp服務器的ip或者域名,第二個參數為ftp服務器的連接端口,默認為21
    ftp.set_debuglevel(2) 
    ftp.login(glv['gvarFtpUid'], glv['gvarFtpPs'])     # 匿名登錄直接使用ftp.login()
    ftp.cwd(glv['gvarRemotPath'])                # 切換到tmp目錄
   
    upload(ftp,"/sjzt/pp/ds/douyin/",r"C:\[20250411]_[抖音]_[XXXX服飾旗艦店]_[視頻合作視頻數據]_[1744461854].xlsx")   # 將當前目錄下的a.txt文件上傳到ftp服務器的tmp目錄,命名為ftp_a.txt  
    # 上面也是Ok 的
    # download(ftp, "ftp_a.txt", "b.txt")  # 將ftp服務器tmp目錄下的ftp_a.txt文件下載到當前目錄,命名為b.txt

    ftp.quit()

到此這篇關于python ftplib上傳文件名亂碼的解決辦法的文章就介紹到這了,更多相關python ftplib上傳文件名亂碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • python3 re返回形式總結

    python3 re返回形式總結

    在本篇文章里小編給大家整理了關于python3 re返回形式,對此有興趣的朋友們可以學習參考下。
    2020-11-11
  • 使用python3調用wxpy模塊監(jiān)控linux日志并定時發(fā)送消息給群組或好友

    使用python3調用wxpy模塊監(jiān)控linux日志并定時發(fā)送消息給群組或好友

    這篇文章主要介紹了使用python3調用wxpy模塊,監(jiān)控linux日志并定時發(fā)送消息給群組或好友,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 詳解python 發(fā)送郵件實例代碼

    詳解python 發(fā)送郵件實例代碼

    本篇文章主要介紹了python 發(fā)送郵件實例代碼,詳細的介紹了各種方式發(fā)送郵件,包括文件形式的郵件、HTML形式的郵件、帶圖片的HTML郵件等,有興趣的可以了解一下。
    2016-12-12
  • 使用Python在Excel工作表中創(chuàng)建數據透視表的方法

    使用Python在Excel工作表中創(chuàng)建數據透視表的方法

    在數據處理和分析工作中,Excel作為一個廣泛使用的工具,提供了強大的功能來管理和解析數據,當面對大量復雜的數據集時,為了更高效地總結、分析和展示數據,創(chuàng)建數據透視表成為一種不可或缺的方法,本文將介紹如何使用Python在Excel工作表中創(chuàng)建數據透視表
    2025-01-01
  • python使用openpyxl實現對excel表格相對路徑的超鏈接的創(chuàng)建方式

    python使用openpyxl實現對excel表格相對路徑的超鏈接的創(chuàng)建方式

    這篇文章主要介紹了python使用openpyxl實現對excel表格相對路徑的超鏈接的創(chuàng)建方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結果的方法

    selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結果的方法

    今天小編就為大家分享一篇selenium在執(zhí)行phantomjs的API并獲取執(zhí)行結果的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python3如何使用多線程升程序運行速度

    Python3如何使用多線程升程序運行速度

    這篇文章主要介紹了Python3如何使用多線程升程序運行速度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python實現前向和反向自動微分的示例代碼

    Python實現前向和反向自動微分的示例代碼

    自動微分技術(稱為“automatic differentiation, autodiff”)是介于符號微分和數值微分的一種技術,它是在計算效率和計算精度之間的一種折衷。本文主要介紹了Python如何實現前向和反向自動微分,需要的可以參考一下
    2022-12-12
  • 13個有趣又好玩的Python游戲代碼分享

    13個有趣又好玩的Python游戲代碼分享

    今天小編跟大家分享13個有趣又好玩的Python小游戲示例代碼,教你如何通過邊打游戲邊學編程!感興趣的小伙伴快跟隨小編一起學習起來
    2022-02-02
  • pandas 根據列的值選取所有行的示例

    pandas 根據列的值選取所有行的示例

    今天小編就為大家分享一篇pandas 根據列的值選取所有行的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評論