- 締切済み
pythonでFTPを使ってファイルアップできない
pythonで写真ファイルを指定したサーバーにFTPアップをしたいと思っています。 rasabarry piで動かしていますが、実行すると、一定時間固まってしまって終わってしまいます。サーバーを見てもファイルがアップされていません。 何か考えられることはありますでしょうか?ファイルはjpgファイルとなります。 下記にソースを明記します。 # -*- coding: utf-8 -*- import ftplib def main(): ftp = ftplib.FTP("xxx.xxx.xxx") ftp.set_pasv("true") ftp.login("user", "password") fp = open("test.jpg", 'rb') ftp.storbinary("STOR /sample/test.jpg",fp) ftp.close() fp.close() if __name__=='__main__': main()
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kteds
- ベストアンサー率42% (1882/4440)
No.1です。 ログインできていないようですので、先ずはログインしてログアウトすることを確認してください。 下記はwin10で実際にwebサーバーにアクセスした例です。 自分の環境で試してみてください。 ログインできればアップロードしてみてください。 C:\Users\xxxxxx>python Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from ftplib import FTP >>> ftp = FTP("XXX.XXXX.XX.XX") >>> ftp.login("user","password") '230 User user logged in' >>> ftp.cwd('www') '250 CWD command successful' >>> ftp.retrlines('LIST') ・・・ LIST(フォルダ・ファイル名)が表示される ・・・ '226 Transfer complete' >>> ftp.quit() '221 Goodbye.' >>> exit() ---基本的なこととしてPythonのサイトを参考にしてください。 このページに全て説明してあります。 「21.13. ftplib — FTPプロトコルクライアント」 https://docs.python.jp/3/library/ftplib.html
- kteds
- ベストアンサー率42% (1882/4440)
コマンドで1行 づつ実行してみてください。 指定したディレクトリ(/sample/)が存在しない、」というエラーが出ているのでは? アップ先にディレクトリを作成してみてください。
補足
コマンドを1行づつ実行してみました。 すると「ftp = ftplib.FTP("xxx.xxx.xxx")」を実行した時点で以下のエラーができました。何か考えられることはありますでしょうか? Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> ftp=ftplib.FTP("xxx.xxx.xx.xxx",xx) File "C:\Users\xxxx\AppData\Local\Programs\Python\Python36-32\lib\ftplib.py", line 117, in __init__ self.connect(host) File "C:\Users\xxxx\AppData\Local\Programs\Python\Python36-32\lib\ftplib.py", line 152, in connect source_address=self.source_address) File "C:\Users\xxxx\AppData\Local\Programs\Python\Python36-32\lib\socket.py", line 722, in create_connection raise err File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\socket.py", line 713, in create_connection sock.connect(sa) TimeoutError: [WinError 10060] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。
お礼
ありがとうございます。 解決しました。