この記事では、Python言語とFTPでサーバーにファイルをアップロードするプログラムについてソースコード付きで解説します。
FTPでサーバーにファイルをアップロード
Pythonには、FTPを使うための標準ライブラリ「ftplib」があります。
今回は、このライブラリで任意のファイルをサーバーにアップロードしてみました。
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import ftplib def ftp_upload(hostname, username, password, upload_src_path, upload_dst_path): # FTP接続・アップロード ftp = ftplib.FTP(host_name) ftp.set_pasv("true") ftp.login(username, password) fp = open(upload_src_path, 'rb') ftp.storbinary(upload_dst_path ,fp) # 終了処理 ftp.close() fp.close() hostname = "xxx.xxx.xxx" # 接続先サーバーのホスト名 upload_src_path = "test.csv" # アップロードするファイルパス upload_dst_path = "STOR /sample/test.csv" # アップロード先のファイルパス username = "user" # サーバーのユーザー名 password = "password" # サーバーのログインパスワード ftp_upload(hostname, username, password, upload_src_path, upload_dst_path)
実行結果
サンプルプログラムの実行結果です。
FTPソフトで確認すると、指定したディレクトリにtest.csvが保存されていました。
尚、指定したディレクトリが存在しない場合はエラーとなります。
【関連記事】
Python入門
コメント
いつも拝見させていただいてます.勉強になっています.
現在ラズベリーパイで色抽出してフレーム間差分(OpenCV3,Python3)を用いて植物の監視用システムを作成しています.そこで,撮った写真をMacに送信したいです.この記事のプログラムを参考にして,ラズパイからpcへ写真を送りたいのですが,pc側でftpサーバをたてないといけません,その方法やおすすめのソフトがあれば教えてください.PCはMacBook Air(Sierra 10.13.1)です.
※おでこ様
コメントありがとうございます。
■PCにサーバーを立てる方法について
XAMPPというソフトを使うのがオススメです。
サーバー構築に必要な「Apache、PHP、MySQL」等を
一括で簡単にインストール・管理できて便利です。
■補足
ちなみに管理人の場合は、自分のPCにFTPサーバーを立てるのではなく
xdomainという無料のレンタルサーバーを借りて練習していました。
管理人様
お返事有難うございました.早速XAMPPというソフトを入れましたが,ftpサーバの立て方がわかりません,参考になるHP,記事,またはやり方を教えていただけないでしょうか.
windows10でもいいです.よろしくお願いします.
※おでこ様
コメントありがとうございます。
以下の記事を参考にされてはどうでしょうか。
XAMPPでFTP(FileZilla)を使うための設定方法【初心者向け】
https://techacademy.jp/magazine/4078
XAMPPのFTPサーバー「FileZilla」の設定手順
http://wplogs.com/xampp-filezilla/
管理者様
有難うございます.トライしてみます.
※おでこ様
コメントありがとうございます。
また何かあれば気軽にご連絡ください。
はじめまして管理人様
今回のこの記事を参考にPythonからFTPログインできないものか試したのですがエラーがずっと出てしまいます。
いつもはCoreserverのレンタルサーバー領域にFileZillaから普通にFTPアップロードできているものをPythonからアップロードしたいと考えたのですが
error_perm: 500 /PUBLIC HTML/ not understood
のエラーが出たりしてアップロード先のディレクトリを変えてみたりすると今度は
error_perm: 550 /public_html/nakanopropertymalaysia.com/: Operation not permitted
に変わったりしますがいずれもアップロードできません。Filezillaなら普通にアップロードできるのです。
この件に関し、TeratailとStack Overflowに質問をかげかけていますが解決に至っておりません。
つきましては管理人様はこのような件の解決に際し、Mentaなどは利用されていませんでしょうか?出来たらすぐに解決し、前に進みたく思っております。
お助けいただけますと嬉しいです。
何卒よろしくお願い致します。
返信が遅れてしまい申し訳ございません。
Menta等は利用しておりません。ざっと見る感じパーミッション、ファイル権限のエラーですので
まずはエラーログを見てみたほうがいいかと思います。
すみません。
上記のプログラムを参考にラズパイ4からFTPでCSVファイルを送ろうと実施してみたのですが
最後のftp_upload(hostname, username, password, upload_src_path, upload_dst_path)
の部分でftplib.error_perm 500 command not と表示されてしまい実行できません。
もし原因がわかれば教えて頂きたいです。