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 Đâ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_tempNgoạ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_permNgoạ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_protoNgoạ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_errorsTậ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ô-đunTrình phân tích cú pháp cho định dạng tệp Đối tượng FTPMộ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 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, Kết nối với máy chủ và cổng đã cho. Số cổng mặc định là >>> 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 Đã 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à 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 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 Truy xuất tệp ở chế độ truyền nhị phân. cmd phải là một lệnh 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 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 Đã 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 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 Nếu phần còn lại tùy chọn được đưa ra, một lệnh 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ì Liệt kê một thư mục ở định dạng chuẩn hóa bằng cách sử dụng lệnh 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 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 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ề 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_TLSlớp kế thừa từ, xác định các đối tượng bổ sung này FTP_TLS. ssl_versionPhiê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 |