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)
コード全文
- ftplibライブラリをimportする。
- ホスト’192.168.88.88’にユーザー名’yoshihiko’、パスワード’8888’で接続する。
- 転送したいテキストファイルのパスを変数に代入する。
- 転送したいテキストファイルをバイナリモードで開く。
- 転送する。
#!/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によるファイル転送方法を説明した。
コメント