Làm cách nào để tạo một chương trình truyền tệp đơn giản bằng python?

Mô-đun này định nghĩa lớp và một vài mục liên quan. Lớp thực hiện phía máy khách của giao thức FTP. Bạn có thể sử dụng điều này để viết các chương trình Python thực hiện nhiều công việc FTP tự động, chẳng hạn như phản chiếu các máy chủ FTP khác. Nó cũng được mô-đun sử dụng để xử lý các URL sử dụng FTP. Để biết thêm thông tin về FTP [Giao thức truyền tệp], hãy xem internet RFC 959

Mã hóa mặc định là UTF-8, tuân theo RFC 2640

không phải Emscripten, không phải WASI

Mô-đun này không hoạt động hoặc không khả dụng trên nền tảng WebAssugging wasm32-emscriptenwasm32-wasi. Xem để biết thêm thông tin

Đây là một phiên mẫu sử dụng mô-đun

>>> from ftplib import FTP
>>> ftp = FTP['ftp.us.debian.org']  # connect to host, default port
>>> ftp.login[]                     # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd['debian']               # change into "debian" directory
'250 Directory successfully changed.'
>>> ftp.retrlines['LIST']           # list directory contents
-rw-rw-r--    1 1176     1176         1063 Jun 15 10:18 README
...
drwxr-sr-x    5 1176     1176         4096 Dec 19  2000 pool
drwxr-sr-x    4 1176     1176         4096 Nov 17  2008 project
drwxr-xr-x    3 1176     1176         4096 Oct 10  2012 tools
'226 Directory send OK.'
>>> with open['README', 'wb'] as fp:
>>>     ftp.retrbinary['RETR README', fp.write]
'226 Transfer complete.'
>>> ftp.quit[]
'221 Goodbye.'

Mô-đun xác định các mục sau

lớp ftplib. FTP[máy chủ='' , user='' , passwd='' , acct='' , thời gian chờ=Không có , source_address=Không có , * , mã hóa='utf-8']

Trả về một thể hiện mới của lớp. Khi máy chủ được cung cấp, cuộc gọi phương thức

>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
1 được thực hiện. Khi người dùng được cung cấp, ngoài ra, lệnh gọi phương thức
>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
2 được thực hiện [trong đó passwd và acct mặc định là chuỗi trống khi không được cung cấp]. Tham số thời gian chờ tùy chọn chỉ định thời gian chờ tính bằng giây cho các hoạt động chặn như nỗ lực kết nối [nếu không được chỉ định, cài đặt thời gian chờ mặc định chung sẽ được sử dụng]. source_address là 2-tuple
>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
3 để ổ cắm liên kết với địa chỉ nguồn của nó trước khi kết nối. Tham số mã hóa chỉ định mã hóa cho các thư mục và tên tệp

Lớp hỗ trợ tuyên bố, e. g

>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>

Đã thay đổi trong phiên bản 3. 2. Hỗ trợ cho tuyên bố đã được thêm vào.

Đã thay đổi trong phiên bản 3. 3. tham số source_address đã được thêm vào.

Đã thay đổi trong phiên bản 3. 9. Nếu tham số thời gian chờ được đặt bằng 0, nó sẽ tăng a để ngăn việc tạo non-blocking socket. Tham số mã hóa đã được thêm vào và mặc định đã được thay đổi từ Latin-1 thành UTF-8 để tuân theo RFC 2640.

lớp ftplib. FTP_TLS[máy chủ='' , user='' , passwd='' , acct='' , keyfile=Không có , certfile=Không , bối cảnh=Không có , thời gian chờ=Không có , source_address=Không có , * , mã hóa='utf-8']

Một lớp con bổ sung hỗ trợ TLS cho FTP như được mô tả trong RFC 4217. Kết nối như bình thường với cổng 21 ngầm bảo mật kết nối điều khiển FTP trước khi xác thực. Bảo mật kết nối dữ liệu yêu cầu người dùng yêu cầu rõ ràng bằng cách gọi phương thức. bối cảnh là một đối tượng cho phép gói các tùy chọn cấu hình SSL, chứng chỉ và khóa riêng thành một cấu trúc duy nhất [có khả năng tồn tại lâu dài]. Vui lòng đọc để thực hành tốt nhất

keyfile và certfile là một giải pháp thay thế kế thừa cho ngữ cảnh – chúng có thể trỏ đến các tệp chuỗi chứng chỉ và khóa riêng có định dạng PEM [tương ứng] cho kết nối SSL

Mới trong phiên bản 3. 2

Đã thay đổi trong phiên bản 3. 3. tham số source_address đã được thêm vào.

Đã thay đổi trong phiên bản 3. 4. Lớp hiện hỗ trợ kiểm tra tên máy chủ và Chỉ định tên máy chủ [xem ].

Không dùng nữa kể từ phiên bản 3. 6. keyfile và certfile không được dùng theo ngữ cảnh. Vui lòng sử dụng thay thế hoặc để hệ thống chọn chứng chỉ CA đáng tin cậy cho bạn.

Đã thay đổi trong phiên bản 3. 9. Nếu tham số thời gian chờ được đặt bằng 0, nó sẽ tăng a để ngăn việc tạo non-blocking socket. Tham số mã hóa đã được thêm vào và mặc định đã được thay đổi từ Latin-1 thành UTF-8 để tuân theo RFC 2640.

Đây là một phiên mẫu sử dụng lớp học

>>> ftps = FTP_TLS['ftp.pureftpd.org']
>>> ftps.login[]
'230 Anonymous user logged in'
>>> ftps.prot_p[]
'200 Data protection level set to "private"'
>>> ftps.nlst[]
['6jack', 'OpenBSD', 'antilink', 'blogbench', 'bsdcam', 'clockspeed', 'djbdns-jedi', 'docs', 'eaccelerator-jedi', 'favicon.ico', 'francotone', 'fugu', 'ignore', 'libpuzzle', 'metalog', 'minidentd', 'misc', 'mysql-udf-global-user-variables', 'php-jenkins-hash', 'php-skein-hash', 'php-webdav', 'phpaudit', 'phpbench', 'pincaster', 'ping', 'posto', 'pub', 'public', 'public_keys', 'pure-ftpd', 'qscan', 'qtc', 'sharedance', 'skycache', 'sound', 'tmp', 'ucarp']

ngoại lệ ftplib. error_reply

Ngoại lệ được đưa ra khi nhận được phản hồi không mong muốn từ máy chủ

ngoại lệ ftplib. error_temp

Ngoại lệ xuất hiện khi nhận được mã lỗi biểu thị lỗi tạm thời [mã phản hồi trong phạm vi 400–499]

ngoại lệ ftplib. error_perm

Ngoại lệ xuất hiện khi nhận được mã lỗi biểu thị lỗi vĩnh viễn [mã phản hồi trong phạm vi 500–599]

ngoại lệ ftplib. error_proto

Ngoại lệ xuất hiện khi nhận được phản hồi từ máy chủ không phù hợp với thông số kỹ thuật phản hồi của Giao thức truyền tệp, i. e. bắt đầu bằng một chữ số trong phạm vi 1–5

ftplib. all_errors

Tập hợp tất cả các ngoại lệ [dưới dạng một bộ] mà các phương thức của phiên bản có thể phát sinh do sự cố với kết nối FTP [trái ngược với lỗi lập trình do người gọi thực hiện]. Bộ này bao gồm bốn trường hợp ngoại lệ được liệt kê ở trên cũng như và

Xem thêm

mô-đun

Trình phân tích cú pháp cho định dạng tệp ftplib1. Tệp ftplib1 thường được các máy khách FTP sử dụng để tải thông tin xác thực người dùng trước khi nhắc người dùng

Đối tượng FTP

Một số phương pháp có sẵn trong hai hương vị. một để xử lý tệp văn bản và một cho tệp nhị phân. Chúng được đặt tên cho lệnh được sử dụng theo sau bởi ftplib3 cho phiên bản văn bản hoặc ftplib4 cho phiên bản nhị phân

trường hợp có các phương pháp sau

FTP. set_debuglevel[cấp]

Đặt cấp độ gỡ lỗi của phiên bản. Điều này kiểm soát số lượng đầu ra gỡ lỗi được in. Giá trị mặc định, ftplib6, không tạo đầu ra gỡ lỗi. Giá trị của ftplib7 tạo ra lượng đầu ra gỡ lỗi vừa phải, thường là một dòng cho mỗi yêu cầu. Giá trị ftplib8 trở lên tạo ra lượng đầu ra gỡ lỗi tối đa, ghi nhật ký từng dòng được gửi và nhận trên kết nối điều khiển

FTP. kết nối[máy chủ=', port=0, timeout=None, source_address=None]

Kết nối với máy chủ và cổng đã cho. Số cổng mặc định là ftplib9, như được chỉ định bởi đặc tả giao thức FTP. Hiếm khi cần chỉ định một số cổng khác. Chức năng này chỉ nên được gọi một lần cho mỗi phiên bản; . Tất cả các phương pháp khác chỉ có thể được sử dụng sau khi kết nối đã được thực hiện. Tham số thời gian chờ tùy chọn chỉ định thời gian chờ tính bằng giây cho nỗ lực kết nối. Nếu không hết thời gian chờ, cài đặt thời gian chờ mặc định chung sẽ được sử dụng. source_address là 2-tuple

>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
3 để ổ cắm liên kết với địa chỉ nguồn của nó trước khi kết nối

Đưa ra một FTP1 với các đối số FTP2, FTP3, FTP4

Đã thay đổi trong phiên bản 3. 3. tham số source_address đã được thêm vào.

FTP. chào mừng[]

Trả lại tin nhắn chào mừng do máy chủ gửi để trả lời kết nối ban đầu. [Thông báo này đôi khi chứa tuyên bố từ chối trách nhiệm hoặc thông tin trợ giúp có thể liên quan đến người dùng. ]

FTP. đăng nhập[người dùng=', passwd='', acct='']

Đăng nhập với tư cách người dùng đã cho. Các tham số passwd và acct là tùy chọn và mặc định là chuỗi rỗng. Nếu không có người dùng nào được chỉ định, nó sẽ mặc định là FTP5. Nếu người dùng là FTP5, mật khẩu mặc định là FTP7. Chức năng này chỉ nên được gọi một lần cho mỗi phiên bản, sau khi kết nối đã được thiết lập; . Hầu hết các lệnh FTP chỉ được phép sau khi máy khách đã đăng nhập. Tham số acct cung cấp “thông tin kế toán”;

FTP. hủy bỏ[]

Hủy bỏ quá trình truyền tệp đang diễn ra. Cách này không phải lúc nào cũng hiệu quả, nhưng nó đáng để thử

FTP. sendcmd[cmd]

Gửi một chuỗi lệnh đơn giản đến máy chủ và trả về chuỗi phản hồi

Tăng một FTP8 với các đối số FTP2, FTP0

FTP. voidcmd[cmd]

Gửi một chuỗi lệnh đơn giản đến máy chủ và xử lý phản hồi. Không trả lại gì nếu nhận được mã phản hồi tương ứng với thành công [mã trong phạm vi 200–299]. nâng cao khác

Tăng một FTP8 với các đối số FTP2, FTP0

FTP. retrbinary[cmd , gọi lại, blocksize=8192, rest=None]

Truy xuất tệp ở chế độ truyền nhị phân. cmd phải là một lệnh FTP5 thích hợp. FTP6. Hàm gọi lại được gọi cho từng khối dữ liệu nhận được, với một đối số byte đơn cho khối dữ liệu. Đối số kích thước khối tùy chọn chỉ định kích thước khối tối đa để đọc trên đối tượng ổ cắm cấp thấp được tạo để thực hiện chuyển giao thực tế [cũng sẽ là kích thước lớn nhất của các khối dữ liệu được chuyển đến gọi lại]. Mặc định hợp lý được chọn. phần còn lại có nghĩa giống như trong phương thức

FTP. retrlines[cmd , gọi lại=None]

Truy xuất danh sách tệp hoặc thư mục trong mã hóa được chỉ định bởi tham số mã hóa khi khởi tạo. cmd phải là một lệnh thích hợp FTP5 [xem ] hoặc một lệnh chẳng hạn như urllib.request0 hoặc urllib.request1 [thường chỉ là chuỗi urllib.request2]. urllib.request0 truy xuất danh sách các tệp và thông tin về các tệp đó. urllib.request1 truy xuất danh sách tên tệp. Hàm gọi lại được gọi cho mỗi dòng có đối số chuỗi chứa dòng có CRLF ở cuối bị tước. Cuộc gọi lại mặc định in dòng tới urllib.request5

FTP. set_pasv[val]

Bật chế độ “thụ động” nếu val là true, nếu không thì tắt chế độ thụ động. Chế độ thụ động được bật theo mặc định

FTP. storbinary[cmd , fp, blocksize=8192, callback=None, rest=None]

Lưu trữ tệp ở chế độ truyền nhị phân. cmd phải là một lệnh urllib.request6 thích hợp. urllib.request7. fp là một [được mở ở chế độ nhị phân] được đọc cho đến khi EOF sử dụng phương thức urllib.request8 của nó trong các khối có kích thước theo khối để cung cấp dữ liệu được lưu trữ. Đối số kích thước khối mặc định là 8192. gọi lại là một tham số đơn tùy chọn có thể gọi được, được gọi trên mỗi khối dữ liệu sau khi được gửi. phần còn lại có nghĩa giống như trong phương thức

Đã thay đổi trong phiên bản 3. 2. đã thêm tham số phần còn lại.

FTP. storlines[cmd , fp, callback=None]

Lưu trữ tệp ở chế độ dòng. cmd phải là một lệnh urllib.request6 thích hợp [xem ]. Các dòng được đọc cho đến khi EOF từ fp [được mở ở chế độ nhị phân] bằng cách sử dụng phương thức của nó để cung cấp dữ liệu được lưu trữ. gọi lại là một tham số đơn tùy chọn có thể gọi được, được gọi trên mỗi dòng sau khi nó được gửi

FTP. chuyển cmd[cmd , nghỉ ngơi=None]

Bắt đầu truyền qua kết nối dữ liệu. Nếu quá trình chuyển đang hoạt động, hãy gửi lệnh wasm32-emscripten3 hoặc wasm32-emscripten4 và lệnh chuyển được chỉ định bởi cmd và chấp nhận kết nối. Nếu máy chủ bị động, hãy gửi lệnh wasm32-emscripten5 hoặc wasm32-emscripten6, kết nối với nó và bắt đầu lệnh truyền. Dù bằng cách nào, hãy trả lại ổ cắm cho kết nối

Nếu phần còn lại tùy chọn được đưa ra, một lệnh wasm32-emscripten7 sẽ được gửi đến máy chủ, chuyển phần còn lại dưới dạng đối số. phần còn lại thường là một phần bù byte vào tệp được yêu cầu, yêu cầu máy chủ khởi động lại việc gửi các byte của tệp ở phần bù được yêu cầu, bỏ qua các byte ban đầu. Tuy nhiên, lưu ý rằng phương thức chuyển đổi phần còn lại thành một chuỗi với tham số mã hóa được chỉ định khi khởi tạo, nhưng không có kiểm tra nào được thực hiện đối với nội dung của chuỗi. Nếu máy chủ không nhận ra lệnh wasm32-emscripten7, một ngoại lệ sẽ được đưa ra. Nếu điều này xảy ra, chỉ cần gọi mà không có đối số nghỉ

FTP. ntransfercmd[cmd , nghỉ ngơi=None]

Like , nhưng trả về một bộ kết nối dữ liệu và kích thước dự kiến ​​của dữ liệu. Nếu không thể tính được kích thước dự kiến, thì wasm32-wasi3 sẽ được trả về như kích thước dự kiến. cmd và phần còn lại có nghĩa giống như trong

FTP. mlsd[đường dẫn=', facts=[]]

Liệt kê một thư mục ở định dạng chuẩn hóa bằng cách sử dụng lệnh wasm32-wasi5 [RFC 3659]. Nếu đường dẫn bị bỏ qua, thư mục hiện tại được giả định. sự kiện là một danh sách các chuỗi đại diện cho loại thông tin mong muốn [e. g. wasm32-wasi6]. Trả về một đối tượng trình tạo mang lại một bộ gồm hai phần tử cho mọi tệp được tìm thấy trong đường dẫn. Phần tử đầu tiên là tên tệp, phần tử thứ hai là từ điển chứa thông tin về tên tệp. Nội dung của từ điển này có thể bị giới hạn bởi đối số sự kiện nhưng máy chủ không được bảo đảm sẽ trả về tất cả các sự kiện được yêu cầu

Mới trong phiên bản 3. 3

FTP. nlst[đối số[ , . ...]]

Trả về danh sách tên tệp như được trả về bởi lệnh urllib.request1. Đối số tùy chọn là một thư mục để liệt kê [mặc định là thư mục máy chủ hiện tại]. Nhiều đối số có thể được sử dụng để chuyển các tùy chọn không chuẩn cho lệnh urllib.request1

Ghi chú

Nếu máy chủ của bạn hỗ trợ lệnh, hãy cung cấp API tốt hơn

FTP. dir[đối số[ , . ...]]

Tạo một danh sách thư mục như được trả về bởi lệnh urllib.request0, in nó ra đầu ra tiêu chuẩn. Đối số tùy chọn là một thư mục để liệt kê [mặc định là thư mục máy chủ hiện tại]. Nhiều đối số có thể được sử dụng để chuyển các tùy chọn không chuẩn cho lệnh urllib.request0. Nếu đối số cuối cùng là một hàm, thì nó được sử dụng làm hàm gọi lại đối với ; . Phương thức này trả về wasm32-wasi3

Ghi chú

Nếu máy chủ của bạn hỗ trợ lệnh, hãy cung cấp API tốt hơn

FTP. đổi tên[từtên , sang tên]

Đổi tên tệp fromname trên máy chủ thành toname

FTP. xóa[tên tệp]

Xóa tệp có tên filename khỏi máy chủ. Nếu thành công, trả về văn bản của phản hồi, nếu không sẽ tăng các lỗi về quyền hoặc các lỗi khác

FTP. cwd[tên đường dẫn]

Đặt thư mục hiện tại trên máy chủ

FTP. mkd[tên đường dẫn]

Tạo một thư mục mới trên máy chủ

FTP. pwd[]

Trả về tên đường dẫn của thư mục hiện tại trên máy chủ

FTP. rmd[tên thư mục]

Xóa thư mục có tên dirname trên máy chủ

FTP. kích thước[tên tệp]

Yêu cầu kích thước của tệp có tên filename trên máy chủ. Khi thành công, kích thước của tệp được trả về dưới dạng số nguyên, nếu không thì trả về wasm32-wasi3. Lưu ý rằng lệnh ftplib9 không được chuẩn hóa, nhưng được hỗ trợ bởi nhiều triển khai máy chủ phổ biến

FTP. thoát[]

Gửi lệnh

>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
00 đến máy chủ và đóng kết nối. Đây là cách "lịch sự" để đóng kết nối, nhưng nó có thể gây ra ngoại lệ nếu máy chủ phản hồi có lỗi đối với lệnh
>>> from ftplib import FTP
>>> with FTP["ftp1.at.proftpd.org"] as ftp:
..     ftp.login[]
..     ftp.dir[]
.. 
'230 Anonymous login ok, restrictions apply.'
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 .
dr-xr-xr-x   9 ftp      ftp           154 May  6 10:43 ..
dr-xr-xr-x   5 ftp      ftp          4096 May  6 10:43 CentOS
dr-xr-xr-x   3 ftp      ftp            18 Jul 10  2008 Fedora
>>>
00. Điều này ngụ ý một cuộc gọi đến phương thức làm cho thể hiện trở nên vô dụng đối với các cuộc gọi tiếp theo [xem bên dưới]

FTP. đóng[]

Đóng kết nối đơn phương. Điều này không nên được áp dụng cho một kết nối đã đóng, chẳng hạn như sau khi gọi thành công tới. Sau cuộc gọi này, cá thể không nên được sử dụng nữa [sau cuộc gọi đến hoặc bạn không thể mở lại kết nối bằng cách đưa ra phương thức khác]

Đối tượng FTP_TLS

lớp kế thừa từ, xác định các đối tượng bổ sung này

FTP_TLS. ssl_version

Phiên bản SSL sẽ sử dụng [mặc định là ]

FTP_TLS. auth[]

Thiết lập kết nối kiểm soát an toàn bằng cách sử dụng TLS hoặc SSL, tùy thuộc vào những gì được chỉ định trong thuộc tính

Đã thay đổi trong phiên bản 3. 4. Phương pháp hiện hỗ trợ kiểm tra tên máy chủ và Chỉ định tên máy chủ [xem ].

FTP_TLS. ccc[]

Hoàn nguyên kênh điều khiển trở lại bản rõ. Điều này có thể hữu ích để tận dụng tường lửa biết cách xử lý NAT với FTP không an toàn mà không cần mở cổng cố định

Chủ Đề