😊
UTF-8非対応のFTPサーバに接続する
はじめに
あるFTPサーバから定期的にファイルを取得する処理をPythonで書くことになりました。
実装をすすめると、ファイルを取得する箇所でUnicodeErrorが発生しました。
もしやとサーバに向けてopts utf8 on コマンドを送信するとレスポンスが451。
ファイル名エンコードをcp932に設定しないといけませんでした。
環境
Python 3.12.5
Amazon Linux 2023
エンコード設定
下記のコードでmlsd(リスト取得)、retrbinary(バイナリファイル取得)まで確認できました。
from ftplib import FTP
ftp = FTP(FTP_ADDRESS, user=USER_ID, passwd=PASSWORD, encoding='cp932')
古い記事だとインスタンス生成前に設定したり、
FTP.encoding = "cp932"
ログイン後に下記のように設定するものもありましたが、
ftp.encoding = "cp932"
私の環境では、retrbinary処理でUnicodeErrorになりました。
Discussion