前提・実現したいこと
クライアント側からftpサーバーにディレクトリを作成し、ファイルを転送したい。
ディレクトリ作成からファイル転送まではできるようになったが、同名のディレクトリが
ある場合にエラーが起きるため、先に同名のディレクトリがあるかを検出し、
あった場合には削除してからディレクトリを作成するようにしたい。
同名のディレクトリがない場合には、エラーが出ずに動作するが、
同名のディレクトリがある場合には、エラーをはいてしまう。
そのため、ifの部分が動作していないと考えられる。
どのようにすればifの部分が動くようになるでしょうか。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "test.py", line 72, in <module> main() File "test.py", line 64, in main ftp_upload(hostname, username, password, upload_file, dir) File "test.py", line 44, in ftp_upload ftp.mkd(dir) File "C:\Python27\lib\ftplib.py", line 589, in mkd resp = self.sendcmd('MKD ' + dirname) File "C:\Python27\lib\ftplib.py", line 251, in sendcmd return self.getresp() File "C:\Python27\lib\ftplib.py", line 226, in getresp raise error_perm, resp ftplib.error_perm: 550 Cannot create a file when that file already exists.
該当のソースコード
# -*- coding: utf8 -* import ftplib import os.path def ftp_upload(hostname, username, password, upload_file, dir): ftp = ftplib.FTP(hostname) ftp.set_pasv("true") ftp.login(username, password) fp = open(upload_file, 'rb') if os.path.exists(dir): ftp.delete(dir + '/' + upload_file) ftp.rmd(dir) ftp.mkd(dir) s = dir + '/'+upload_file ftp.storbinary('STOR '+s, fp) ftp.close() fp.close() def main(): hostname = "***.***.**.**" upload_file = "test.py" username = "hoge" password = "hoge" dir = "hogehoge" ftp_upload(hostname, username, password, upload_file, dir) if __name__ == '__main__': main()
試したこと
補足情報(FW/ツールのバージョンなど)
windowsでpython2.7をつかってます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/05 05:01
2019/12/05 05:03
2019/12/05 05:08
2019/12/05 05:37
2019/12/05 07:34