全角のファイル名がFTPクライアントでダウンロードできないときはPython3.9を使おう

 

@niftyのLaCoocanサービスが2025年9月で突然終了してしまうから

データのバックアップを取った。

 

SQLファイルはLaCoocanサービスにログインしてaaとか適当なフォルダにphpMyAdminを

インストールしてパスワード忘れたらメールで再発行してもらえば.sqlファイルをエクスポート

して保存する。

 

homepageフォルダはFFFTP/FileZillaクライアントでダウンロードするのだが

全角のファイル名がダウンロードできない目に遭うこともある。

 

そこでPython3.9を使おう。3.8は絶対にだめです。無料ダウンロードできる。

 

「xAIのGrokによる支援」でAIにコードを書いてもらった。

14回の試行錯誤の末に全角のファイル名がダウンロードできた。

 

以下のコードを「file.py」でコピペして設定と全角ファイル名を入れる。

$ python3.9 file.py

で実行すると全角の「1.jpg」のファイルがダウンロードできた。これはでかい。

 

「1.jpg」は失敗したファイル名に適宜書き換える。

設定でサーバ名、アカウント、パスワード、ローカルのダウンロードしたいフォルダを指定する。

これでFFFTP/FileZillaクライアントで全角のファイル名で失敗したのを保存できる。

 

いくらGoogle検索してもあきらめました記事しか出てこないから書いた。

 

 

     import ftplib
     import os
     from pathlib import Path

     # 設定
     FTP_HOST = 'your_ftp_server'
     FTP_USER = 'your_username'
     FTP_PASS = 'your_password'
     FTP_DIR = 'your_directory'
     DOWNLOAD_DIR = 'your_local_directory'
     file = '1.jpg' # サーバー上のファイル名

     def download_single_file():
         # ローカル保存ディレクトリを作成
         Path(DOWNLOAD_DIR).mkdir(exist_ok=True)
         local_path = os.path.join(DOWNLOAD_DIR, file)
         print(f"ローカルパス: {local_path}")

        # FTP接続(Shift-JISエンコーディング)
         ftp = ftplib.FTP(FTP_HOST, encoding='shift-jis')
         ftp.set_debuglevel(2)
         ftp.login(FTP_USER, FTP_PASS) # ログイン
         ftp.sendcmd('OPTS UTF8 ON')
         ftp.cwd(FTP_DIR)
         ftp.voidcmd("TYPE I")

         size = ftp.size(file)
         print(f"サーバー上の {file} のサイズ: {size} バイト")

         with open(local_path, 'wb') as f:
             ftp.retrbinary(f'RETR {file}', f.write, blocksize=16384)
         downloaded_size = os.path.getsize(local_path)
         print(f"{file} をダウンロード完了 ({downloaded_size} バイト)")

         ftp.quit()

     if __name__ == "__main__":
         download_single_file()

 

 

プロモーション