Python | FTPによるファイル転送

Python

PythonでFTPによりファイル転送する方法を説明する。

概略

PythonでFTPによりファイル転送を行う。

基本

1. ライブラリ

ftplibというライブラリを使用する。

from ftplib import FTP

2. FTP接続

接続先機器のhost、ユーザー名、パスワードを記述しFTP()で接続する。

ftp = FTP(host='192.168.88.88', user='yoshihiko', passwd='8888')

3. ファイル転送

storlines()でファイルを転送する。

  • ‘rb’はファイルをバイナリモードで開くという意味。
  • storelines(‘STOR テキストファイルのパス’, f)でテキストファイルが転送できる。
text_file = 'テキストファイルのパス'
with open(text_file, 'rb') as f:
    ftp.storlines('STOR ' + text_file , f)

具体例

このようなアプリを作成する。

  • ボタンをクリックすると接続相手とFTP接続する。
  • 接続相手にテキストファイルを送信する。

FTPの部分はこのような感じにしてみる。

    def transfer_file_via_ftp(self):
        try:
            ftp = FTP(host='192.168.88.88', user='yoshihiko', passwd='8888')
        except:
            print('FTP接続できません')
            return

        text_file = 'ヨシヒコのメモ帳.txt'
        with open(text_file, 'rb') as f:
            ftp.storlines('STOR ' + text_file , f)

コード全文

  1. ftplibライブラリをimportする。
  2. ホスト’192.168.88.88’にユーザー名’yoshihiko’、パスワード’8888’で接続する。
  3. 転送したいテキストファイルのパスを変数に代入する。
  4. 転送したいテキストファイルをバイナリモードで開く。
  5. 転送する。
#!/usr/bin/env python3

from ftplib import FTP                                                  # 1
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton


class GuiWindow(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        self.setGeometry(0, 0, 250, 100)
        self.build_ui()
        self.connect_signal_slot()

    def build_ui(self):
        self.button = QPushButton('FTP転送する', self)
        self.button.setGeometry(25, 30, 200, 40)

    def connect_signal_slot(self):
        self.button.clicked.connect(self.transfer_file_via_ftp)

    def transfer_file_via_ftp(self):
        try:                                                            # 2
            ftp = FTP(host='192.168.88.88', user='yoshihiko', passwd='8888')
        except:
            print('FTP接続できません')
            return

        text_file = 'ヨシヒコのメモ帳.txt'                                 # 3
        with open(text_file, 'rb') as f:                                # 4
            ftp.storlines('STOR ' + text_file , f)                      # 5


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = GuiWindow()
    window.show()
    sys.exit(app.exec())

まとめ

PythonでのFTPによるファイル転送方法を説明した。

コメント