Trăn ftplib

=> Tôi đã tìm thấy trang web này trong khi googling để tìm cách kiểm tra xem tệp có tồn tại bằng FTPLIB trong Python không. Sau đây là những gì tôi đã tìm ra (hy vọng nó sẽ giúp được với ai đó)

Nội dung chính Hiển thị

  • Conconnection (máy chủ [, port [,thời gian chờ]]) Conconnection with the host and port used for. Số cổng mặc định là 21, như được định nghĩa chỉ bởi FTP đặc tả giao thức.
  • Đăng nhập ([Người dùng [, Mật khẩu [, ACCT]]]]) Đăng nhập dưới dạng người dùng đã cho.
  • Ftplib làm gì với Python?
  • Làm cách nào để truy cập FTP trong Python?
  • Làm cách nào để tải xuống một tệp bằng FTP trong Python?
  • Làm cách nào để đóng kết nối FTP trong Python?

=> Khi cố gắng liệt kê các tệp/thư mục không tồn tại, ftplib sẽ tăng một ngoại lệ. Mặc dù việc thử nghiệm thêm/ngoại trừ khối là một tiêu chuẩn thông số hợp lệ và một ý tưởng tốt, tôi chỉ thích các tập lệnh FTP của mình để tải xuống (các) tệp sau khi chắc chắn chúng tồn tại. Điều này giúp giữ cho các lệnh của tôi đơn giản hơn - ít nhất là khi liệt kê một thư mục trên máy chủ FTP là có thể

Ví dụ. máy chủ EDGAR FTP có nhiều tệp được lưu trữ theo thư mục/edgar/index hàng ngày/. Mỗi tập tin được đặt tên là "Master. yyymmdd. idx". Không có gì chắc chắn rằng tập tin sẽ tồn tại cho mỗi ngày (yyyymmdd) - không có tệp ngày 24 tháng 11 năm 2013, nhưng có tệp ngày. 22 tháng 11 năm 2013. Liệt kê các hoạt động như thế nào trong hai trường hợp này?

# Code
from __future__ import print_function  
import ftplib  

ftp_client = ftplib.FTP("ftp.sec.gov", "anonymous", "")  
resp = ftp_client.sendcmd("MLST /edgar/daily-index/master.20131122.idx")  
print(resp)   
resp = ftp_client.sendcmd("MLST /edgar/daily-index/master.20131124.idx")  
print(resp)  

# Output
250-Start of list for /edgar/daily-index/master.20131122.idx  
modify=20131123030124;perm=adfr;size=301580;type=file;unique=11UAEAA398;  
UNIX.group=1;UNIX.mode=0644;UNIX.owner=1019;  
/edgar/daily-index/master.20131122.idx
250 End of list  

Traceback (most recent call last):
File "", line 10, in <module>
resp = ftp_client.sendcmd("MLST /edgar/daily-index/master.20131124.idx")
File "lib/python2.7/ftplib.py", line 244, in sendcmd
return self.getresp()
File "lib/python2.7/ftplib.py", line 219, in getresp
raise error_perm, resp
ftplib.error_perm: 550 '/edgar/daily-index/master.20131124.idx' cannot be listed

Như mong đợi, việc liệt kê một tệp tệp không tồn tại tạo ra một ngoại lệ

=> Vì tôi biết rằng máy chủ EDGAR FTP chắc chắn sẽ có thư mục/edgar/index hàng ngày/, lệnh của tôi có thể thực hiện như sau để tránh nêu các ngoại lệ do các tệp không tồn tại. a) This directory list. b) Tải xuống (các) tệp cần thiết nếu chúng có mặt trong danh sách này - để kiểm tra danh sách, tôi thường thực hiện tìm kiếm regexp tìm kiếm, trên danh sách các chuỗi mà hoạt động hiển thị trả lại.
a) liệt kê thư mục này.
b) tải xuống (các) tệp được yêu cầu nếu chúng có trong danh sách này - Để kiểm tra danh sách, tôi thường thực hiện tìm kiếm biểu thức chính quy, trên danh sách các chuỗi mà thao tác liệt kê trả về.

Ví dụ, tập lệnh này đang cố gắng tải xuống các tệp trong ba ngày qua. Nếu một tệp được tìm thấy cho một định dạng ngày nhất thì nó sẽ được tải xuống, nếu không có gì xảy ra

import ftplib
import re
from datetime import date, timedelta

ftp_client = ftplib.FTP("ftp.sec.gov", "anonymous", "")
listing = []
# List the directory and store each directory entry as a string in an array
ftp_client.retrlines("LIST /edgar/daily-index", listing.append)
# go back 1,2 and 3 days
for diff in [1,2,3]:
  today = (date.today() - timedelta(days=diff)).strftime("%Y%m%d")
  month = (date.today() - timedelta(days=diff)).strftime("%Y_%m")
  # the absolute path of the file we want to download - if it indeed exists
  file_path = "/edgar/daily-index/master.%(date)s.idx" % { "date": today }
  # create a regex to match the file's name
  pattern = re.compile("master.%(date)s.idx" % { "date": today })
  # filter out elements from the listing that match the pattern
  found = filter(lambda x: re.search(pattern, x) != None, listing)
  if( len(found) > 0 ):
    ftp_client.retrbinary(
      "RETR %(file_path)s" % { "file_path": file_path },
      open(
        './edgar/daily-index/%(month)s/master.%(date)s.idx' % {
          "date": today
        }, 'wb'
      ).write
    )

=> Thật thú vị, có những vấn đề chúng tôi không thể liệt kê một thư mục trên máy chủ FTP. Ví dụ, máy chủ EDGAR FTP, không biết danh sách trên /edgar /dữ liệu vì nó chứa quá nhiều thư mục phụ. Trong những trường hợp như vậy, tôi sẽ không thể sử dụng phương pháp "Danh sách và kiểm tra sự tồn tại" được mô tả ở đây - trong những trường hợp này, tôi sẽ phải sử dụng xử lý ngoại lệ trong tệp lệnh

Tessa Lau

chưa đọc,

Ngày 11 tháng 7 năm 1996, 3. 00. 00 giờ chiều ngày 7/11/9611/7/96

đến

Ftplib làm gì với Python?

Python có một mô-đun gọi là ftplib cho phép chuyển các tệp thông qua giao thức FTP. Mô-đun FTPLIB cho phép chúng tôi phát triển khai thác máy khách của giao thức FTP và nó cho phép người dùng kết nối với máy chủ để gửi và nhận tệp.
các máy chủ ftp khác nhau. Cách tốt nhất để xác minh sự tồn tại mà không
thực sự lấy tệp là gì? . sendcmd('stat /path/to/file') và phân tích cú pháp kết quả---nhưng điều này chỉ
ftp.sendcmd('stat /path/to/file') and parse the results---but this only
hoạt động khi máy chủ từ xa là máy chủ unix và trả về đầu ra của
/bin/ls. And it gets messy when I want to stat a directory instead of a
tệp.

Làm cách nào để truy cập FTP trong Python?

Cảm ơn. --Tessa
--Tessa

Phương pháp FTP phổ biến.
Tessa Lau <>
Người bảo trì Linux Game Tome (sử dụng python. )

Conconnection (máy chủ [, port [,thời gian chờ]]) Conconnection with the host and port used for. Số cổng mặc định là 21, như được định nghĩa chỉ bởi FTP đặc tả giao thức.

chưa đọc,

Ngày 11 tháng 7 năm 1996, 3. 00. 00 giờ chiều ngày 7/11/9611/7/96

đến

Ftplib làm được gì với Python?
. Xin chào,

Python có một mô-đun gọi là ftplib cho phép chuyển các tệp thông qua giao thức FTP. Mô-đun FTPLIB cho phép chúng tôi phát triển khai thác phía khách hàng của giao thức FTP và nó cho phép người dùng kết nối với máy chủ để gửi và nhận tệp.
. máy chủ ftp khác nhau. Cách tốt nhất để xác minh sự tồn tại mà không cần
. thực sự nhận được các tập tin? . ftp. sendcmd('stat /path/to/file') và phân tích cú pháp kết quả---nhưng chỉ điều này
: ftp.sendcmd('stat /path/to/file') and parse the results---but this only
. hoạt động khi máy chủ từ xa là máy chủ unix và trả về đầu ra của
. /bin/ls. Và nó trở nên lộn xộn khi tôi muốn thống kê một thư mục thay vì
. tập tin.

Vấn đề

Làm cách nào để truy cập FTP trong Python?

Phương pháp FTP phổ biến

Conconnection (máy chủ [, port [,thời gian chờ]]) Conconnection with the host and port used for. Số cổng mặc định là 21, như được định nghĩa chỉ bởi FTP đặc tả giao thức.

Đăng nhập ([Người dùng [, Mật khẩu [, ACCT]]]]) Đăng nhập dưới dạng người dùng đã cho.

chưa đọc,

Ngày 12 tháng 7 năm 1996, 3. 00. 00 PM7/12/9612/7/96

đến

Lấy lại (lệnh [, gọi lại]) Truy xuất danh sách tệp hoặc thư mục trong chế độ chuyển đổi ASCII

Cách làm nào để tải xuống một tệp bằng FTP trong Python?
>Tôi đang viết một tập lệnh xác minh sự tồn tại của một số tệp trên
>different ftp servers. What's the best way to verify existence, without
>thực sự lấy tệp là gì?

Cách tải xuống và tải lên các tệp trong máy chủ FTP bằng Python

người phục vụ. kích thước (tên tệp)

Nó ném một ngoại lệ nếu tệp không có hoặc nếu đó là một thư mục

Trân trọng, Martin
Martin

Tessa Lau

chưa đọc,

Ngày 12 tháng 7 năm 1996, 3. 00. 00 PM7/12/9612/7/96

đến

Ftplib làm gì với Python?

Python có một mô-đun gọi là ftplib cho phép chuyển các tệp thông qua giao thức FTP. Mô-đun FTPLIB cho phép chúng tôi phát triển khai thác máy khách của giao thức FTP và nó cho phép người dùng kết nối với máy chủ để gửi và nhận tệp. cho phép truyền tệp qua giao thức FTP . Mô-đun ftplib cho phép chúng tôi triển khai phía máy khách của giao thức FTP và nó cho phép người dùng kết nối với máy chủ để gửi và nhận tệp.

Làm cách nào để truy cập FTP trong Python?

Phương pháp FTP phổ biến. .

Conconnection (máy chủ [, port [,thời gian chờ]]) Conconnection with the host and port used for. Số cổng mặc định là 21, như được định nghĩa chỉ bởi FTP đặc tả giao thức

Đăng nhập ([Người dùng [, Mật khẩu [, ACCT]]]]) Đăng nhập dưới dạng người dùng đã cho

Lấy lại (lệnh [, gọi lại]) Truy xuất danh sách tệp hoặc thư mục trong chế độ chuyển đổi ASCII

Làm cách nào để tải xuống một tệp bằng FTP trong Python?

Cách tải xuống và tải lên các tệp trong máy chủ FTP bằng Python. .

Nhập ftplib ftp_host = "ftp. dlptest. com" ftp_user = "[email được bảo vệ]" ftp_pass = "szmf7rte4pcrf9dv286gune4n"

# Kết nối với máy chủ FTP ftp = ftplib

Làm cách nào để đóng kết nối FTP trong Python?

Phương thức thoát () một cách duyên dáng close kết nối FTP với máy chủ. Sau khi bỏ qua () được gọi, các đối tượng FTP không thể được sử dụng bằng cách gọi lại phương thức Connect (). Phương thức thoát () bên trong khi gửi lệnh thoát đến máy chủ FTP