2008-08-05 20 views
35

Tôi đã tạo tập lệnh PHP để cập nhật máy chủ web nằm trong thư mục cục bộ. Tôi đang di chuyển tập lệnh sang Python. Nó hoạt động tốt cho hầu hết các phần, nhưng sau khi một lệnh PUT kích thước của tập tin xuất hiện để thay đổi. Do đó, kích thước của tệp khác với tệp của máy chủ.Sự khác biệt về kích thước tệp sau khi sao chép tệp vào máy chủ vía FTP

Khi tôi tải xuống lại tệp từ máy chủ FTP, điểm khác biệt duy nhất là dấu CR/LF. Điều này làm phiền tôi bởi vì cùng một kịch bản là so sánh kích thước của các tập tin để cập nhật. Ngoài ra, trong trường hợp nó có nghĩa là bất cứ điều gì, kịch bản hoạt động hoàn hảo trong PHP vía ftp_put.

from ftplib import FTP 

ftpserver = "myserver" 
ftpuser = "myuser" 
ftppass = "mypwd" 

locfile = "g:/test/style.css" 
ftpfile = "/temp/style.css" 

try: 
    ftp = FTP(ftpserver, ftpuser, ftppass) 
except: 
    exit ("Cannot connect") 

f = open (locfile, "r") 
try: 
    ftp.delete (ftpfile) 
except: 
    pass 

# ftp.sendcmd ("TYPE I") 
# ftp.storlines("STOR %s" % ftpfile, f) 
ftp.storbinary("STOR %s" % ftpfile, f) 
f.close() 

ftp.dir (ftpfile) 
ftp.quit() 

Mọi đề xuất?

Trả lời

17

Bạn có cần mở tệp địa phương bằng nhị phân bằng cách sử dụng rb không?

f = open (locfile, "rb") 
+0

Cảm ơn bạn rất nhiều, đây là bức ảnh giữa đôi mắt tôi cần, tôi đã dành tất cả cuối tuần đập đầu vào tường. Điều này cũng áp dụng cho kịch bản ngược lại, chuyển từ ftp. – snarkyname77

+0

Nó hoạt động hoàn hảo với lời khuyên của bạn. Cảm ơn! (một phản ứng tích cực trong 2 phút, wow) – PabloG

+0

@PabloG Bạn đã thực sự đưa ra nhận xét đó ngay bây giờ, hoặc tôi đã bị hút vào một thời gian dọc? –

3

Vâng, nếu bạn đi theo các thuộc tính của tệp trong Windows hoặc môi trường * nix, bạn sẽ thấy hai kích thước. Một là kích thước ngành, và một là kích thước thực tế. Kích thước sector là số sector trong các byte được sử dụng trên đĩa cứng của bạn. Đó là vì hai tệp không thể ở trong cùng một ngành với hầu hết các hệ thống tệp hiện đại, vì vậy nếu tệp của bạn chiếm một nửa ngành, toàn bộ khu vực được đánh dấu là đã điền.

Vì vậy, bạn có thể so sánh kích thước tệp ngành với kích thước tệp thực trên máy chủ FTP hoặc ngược lại.

0

Tệp nhỏ chiếm toàn bộ nút trên hệ thống tệp ở mọi kích thước.

Máy chủ lưu trữ của tôi có xu hướng báo cáo tất cả các tệp nhỏ là 4kb trong ftp nhưng trong một trình bao mang lại kích thước chính xác để nó có thể là 'tính năng' phổ biến với các khách hàng ftp.

Các vấn đề liên quan