Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ไคลเอนต์โปรโตคอล FTP ใน Python


สิ่งสำคัญทั้งหมด คลาส FTP ในโมดูล ftplib ใช้งานฝั่งไคลเอ็นต์ของโปรโตคอล FTP

หากต้องการสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ FTP ให้รับวัตถุ FTP

con=FTP(ชื่อโฮสต์)

คลาส FTP รองรับวิธีการดังต่อไปนี้ -

เชื่อมต่อ()

เชื่อมต่อกับโฮสต์และพอร์ตที่กำหนด หมายเลขพอร์ตเริ่มต้นคือ 21 ตามที่ระบุโดยข้อกำหนดโปรโตคอล FTP

Getwelcome()

ส่งคืนข้อความต้อนรับที่ส่งโดยเซิร์ฟเวอร์เพื่อตอบกลับการเชื่อมต่อเริ่มต้น

เข้าสู่ระบบ (ผู้ใช้='ไม่ระบุชื่อ', passwd='', acct='')

เข้าสู่ระบบในฐานะผู้ใช้ที่กำหนด พารามิเตอร์ passwd และ acct เป็นทางเลือกและเป็นค่าเริ่มต้นสำหรับสตริงว่าง หากไม่มีการระบุผู้ใช้ จะมีค่าเริ่มต้นเป็น 'ไม่ระบุชื่อ' หากผู้ใช้เป็น 'ไม่ระบุชื่อ' รหัสผ่านเริ่มต้นคือ 'anonymous@'

ยกเลิก()

ยกเลิกการถ่ายโอนไฟล์ที่กำลังดำเนินการ

retrbinary(cmd, โทรกลับ, blocksize=8192, rest=None)

ดึงไฟล์ในโหมดการถ่ายโอนไบนารี cmd ควรเป็นคำสั่ง RETR ที่เหมาะสม:'RETR filename'

Storbinary()

เก็บไฟล์ในโหมดถ่ายโอนไบนารี cmd ควรเป็นคำสั่ง STOR ที่เหมาะสม:"STOR filename" fp เป็นวัตถุไฟล์ (เปิดในโหมดไบนารี) ซึ่งอ่านได้จนถึง EOF โดยใช้เมธอด read()

ผบ()

สร้างรายการไดเร็กทอรีตามที่ส่งคืนโดยคำสั่ง LIST โดยพิมพ์ไปยังเอาต์พุตมาตรฐาน

ลบ(ชื่อไฟล์)

ลบไฟล์ชื่อ filename ออกจากเซิร์ฟเวอร์

cwd(ชื่อพาธ)

ตั้งค่าไดเร็กทอรีปัจจุบันบนเซิร์ฟเวอร์

mkd(ชื่อพาธ)

สร้างไดเร็กทอรีใหม่บนเซิร์ฟเวอร์

FTP.pwd()

ส่งคืนชื่อพาธของไดเร็กทอรีปัจจุบันบนเซิร์ฟเวอร์

rmd(dirname)

ลบไดเร็กทอรีชื่อ dirname บนเซิร์ฟเวอร์

ขนาด(ชื่อไฟล์)

ขอขนาดไฟล์ชื่อไฟล์บนเซิร์ฟเวอร์ เมื่อสำเร็จ ขนาดของไฟล์จะถูกส่งคืนเป็นจำนวนเต็ม มิฉะนั้น จะไม่มีส่งคืน โปรดทราบว่าคำสั่ง SIZE ไม่ได้กำหนดมาตรฐาน แต่รองรับการใช้งานเซิร์ฟเวอร์ทั่วไปหลายตัว

เลิก()

ส่งคำสั่ง QUIT ไปยังเซิร์ฟเวอร์และปิดการเชื่อมต่อ

ตัวอย่างต่อไปนี้สร้างการเชื่อมต่อแบบไม่ระบุชื่อกับเซิร์ฟเวอร์ ดาวน์โหลดไฟล์ไปยังโฟลเดอร์ในเครื่อง และอัปโหลดไฟล์ในเครื่อง

from ftplib import FTP
import os
def downloadFile():
   filename = 'README.MIRRORS'
   localfile = open(filename, 'wb')
   ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
   ftp.quit()
   localfile.close()
def uploadFile():
   filename = '/home/malhar/file.txt'
   ftp.storbinary('STOR '+filename, open(filename, 'rb'))
   ftp.quit()
with FTP("ftp1.at.proftpd.org") as ftp:
   ftp.login()
   ftp.getwelcome()
   ftp.dir()
   downloadFile()
   uploadFile()