こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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()

投稿日時 - 2017-08-10 10:05:17

QNo.9361374

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2017-08-11 11:47:40

お礼

ありがとうございます。
解決しました。

投稿日時 - 2017-08-11 16:56:51

ANo.1

コマンドで1行 づつ実行してみてください。
指定したディレクトリ(/sample/)が存在しない、」というエラーが出ているのでは?
アップ先にディレクトリを作成してみてください。

投稿日時 - 2017-08-10 17:14:26

補足

コマンドを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] 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立された接続は失敗しました。

投稿日時 - 2017-08-11 10:12:27