Hướng dẫn python filecmp - python filecmp

Mã nguồn: lib/filecmp.py Lib/filecmp.py


Mô-đun filecmp xác định các chức năng để so sánh các tệp và thư mục, với các đánh đổi thời gian/chính xác tùy chọn khác nhau. Để so sánh các tệp, xem thêm mô -đun difflib.

Mô -đun filecmp xác định các chức năng sau:

________ 4 ________ 5 (f1, f2, nông = true) ¶(f1, f2, shallow=True)

So sánh các tệp có tên F1 và F2, trả về True nếu chúng có vẻ bằng, False khác.

Nếu nông là đúng và chữ ký os.stat() (loại tệp, kích thước và thời gian sửa đổi) của cả hai tệp là giống hệt nhau, các tệp được coi là bằng nhau.

Mặt khác, các tệp được coi là khác nhau nếu kích thước hoặc nội dung của chúng khác nhau.

Lưu ý rằng không có chương trình bên ngoài nào được gọi từ chức năng này, mang lại cho nó tính di động và hiệu quả.

Hàm này sử dụng bộ đệm cho các so sánh trong quá khứ và kết quả, với các mục bộ đệm được vô hiệu hóa nếu thông tin os.stat() cho tệp thay đổi. Toàn bộ bộ đệm có thể được xóa bằng filecmp0.

________ 4 ________ 12 (dir1, dir2, phổ biến, nông cạn = true) ¶(dir1, dir2, common, shallow=True)

So sánh các tệp trong hai thư mục DIR1 và DIR2 có tên được đưa ra bởi Common.

Trả về ba danh sách tên tệp: khớp, không phù hợp, lỗi. Trận đấu chứa danh sách các tệp khớp, không phù hợp chứa tên của các tệp don don và lỗi liệt kê tên của các tệp không thể so sánh. Các tệp được liệt kê trong các lỗi nếu chúng không tồn tại trong một trong các thư mục, người dùng thiếu quyền đọc chúng hoặc nếu không thể so sánh được vì một số lý do khác.

Tham số nông có cùng ý nghĩa và giá trị mặc định như đối với filecmp3.

Ví dụ: filecmp4 sẽ so sánh filecmp5 với filecmp6 và filecmp7 với filecmp8. filecmp9 và difflib0 mỗi người sẽ ở trong một trong ba danh sách được trả lại.

________ 4 ________ 22 ()()

Xóa bộ nhớ cache FileCmp. Điều này có thể hữu ích nếu một tệp được so sánh rất nhanh sau khi được sửa đổi đến nỗi nó nằm trong độ phân giải MTIME của hệ thống tập tin cơ bản.

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

Lớp difflib3

Lớp ________ 4 ________ 25 (a, b, bỏ qua = không, ẩn = không) ¶(a, b, ignore=None, hide=None)

Xây dựng một đối tượng so sánh thư mục mới, để so sánh các thư mục a và b. Bỏ qua là danh sách các tên để bỏ qua và mặc định là difflib6. Hide là danh sách các tên để ẩn và mặc định là difflib7.

Lớp difflib3 so sánh các tệp bằng cách thực hiện các so sánh nông như được mô tả cho filecmp3.

Lớp difflib3 cung cấp các phương pháp sau:

________ 31 ()()

In (đến filecmp2) so sánh giữa a và b.

________ 33 ()()

In một so sánh giữa A và B và các thư mục con ngay lập tức.

________ 34 ()()

In một so sánh giữa A và B và các thư mục con chung (đệ quy).

Lớp difflib3 cung cấp một số thuộc tính thú vị có thể được sử dụng để có được nhiều thông tin khác nhau về các cây thư mục được so sánh.

Lưu ý rằng thông qua các móc filecmp6, tất cả các thuộc tính được tính toán một cách lười biếng, do đó không có hình phạt tốc độ nếu chỉ sử dụng các thuộc tính nhẹ để tính toán được sử dụng.

________ 37¶

Thư mục a.

________ 38¶

Thư mục b.

________ 39¶

Các tệp và thư mục con trong A, được lọc bằng cách ẩn và bỏ qua.

________ 40¶

Các tệp và thư mục con trong B, được lọc bằng cách ẩn và bỏ qua.

________ 41¶

Các tập tin và thư mục con trong cả a và b.

________ 42¶

Tập tin và thư mục con chỉ trong a.

________ 43¶

Các tập tin và thư mục con chỉ trong b.

________ 44¶

Các thư mục con trong cả a và b.

________ 45¶

Các tập tin trong cả a và b.

________ 46¶

Tên trong cả A và B, sao cho loại khác nhau giữa các thư mục hoặc tên mà os.stat() báo cáo lỗi.

________ 48¶

Các tệp giống hệt nhau trong cả A và B, sử dụng toán tử so sánh tệp lớp.

________ 49¶

Các tệp trong cả A và B, có nội dung khác nhau tùy theo toán tử so sánh tệp lớp.

________ 50¶

Các tệp trong cả A và B, nhưng không thể so sánh được.

________ 51¶

Một tên ánh xạ từ điển trong các trường hợp cmp2 đến difflib3 (hoặc các trường hợp myDircMP nếu trường hợp này thuộc loại myDircmp, một lớp con của difflib3).

Thay đổi trong phiên bản 3.10: Các mục trước đó luôn là các trường hợp ____23. Bây giờ các mục là cùng loại với bản thân, nếu bản thân là một lớp con của difflib3.Previously entries were always difflib3 instances. Now entries are the same type as self, if self is a subclass of difflib3.

________ 4 ________ 58¶

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

Lớp difflib3

Lớp ________ 4 ________ 25 (a, b, bỏ qua = không, ẩn = không) ¶

>>> from filecmp import dircmp
>>> def print_diff_files(dcmp):
...     for name in dcmp.diff_files:
...         print("diff_file %s found in %s and %s" % (name, dcmp.left,
...               dcmp.right))
...     for sub_dcmp in dcmp.subdirs.values():
...         print_diff_files(sub_dcmp)
...
>>> dcmp = dircmp('dir1', 'dir2') 
>>> print_diff_files(dcmp)