โมดูล ftplib ใน Standard Library ใช้เขียนโปรแกรมทำ FTP Jobs แบบอัตโนมัติ: เชื่อมต่อ FTP Server, ดึงไฟล์, ประมวลผลในเครื่อง
ตัวอย่างพื้นฐาน
import ftplib
ftp = ftplib.FTP('ftp.yourserver.com', 'yourusername', 'your@email.address')
print("File List:")
files = ftp.dir()
print(files)
ftp.cwd("/tmp") # เปลี่ยน Working Directory
ftp.quit() # ปิดการเชื่อมต่อ
การดาวน์โหลดไฟล์ (Download)
>> with open('local_file.txt', 'wb') as f:
... ftp.retrbinary('RETR remote_file.txt', f.write)
การอัปโหลดไฟล์ (Upload)
>> with open('local_file.txt', 'rb') as f:
... ftp.storbinary('STOR remote_file.txt', f)
การจัดการ Directory
>> ftp.mkd('new_folder') # สร้างโฟลเดอร์
>>> ftp.rmd('old_folder') # ลบโฟลเดอร์ (ต้องว่าง)
>>> ftp.cwd('subdir') # เข้าโฟลเดอร์
>>> ftp.cwd('..') # กลับไป parent
Passive vs Active Mode
>> ftp.set_pasv(True) # Passive Mode (Default, ผ่าน Firewall/NAT ได้ดีกว่า) >>> ftp.set_pasv(False) # Active Mode
Error Handling
>> try:
... ftp = ftplib.FTP(host, user, passwd)
... # ... operations ...
... except ftplib.all_errors as e:
... print(f"FTP Error: {e}")
... finally:
... ftp.quit()
Alternatives: requests-ftp, pyftpdlib (server side)