全角のファイル名が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()
プロモーション











