mimetypes --- Ánh xạ tên tệp theo loại MIME¶
Source code: Lib/mimetypes.py
Mô-đun mimetypes chuyển đổi giữa tên tệp hoặc URL và loại MIME được liên kết với phần mở rộng tên tệp. Chuyển đổi được cung cấp từ tên tệp sang loại MIME và từ loại MIME sang phần mở rộng tên tệp; mã hóa không được hỗ trợ cho chuyển đổi sau.
Mô-đun này cung cấp một lớp và một số chức năng tiện lợi. Các chức năng là giao diện bình thường của mô-đun này, nhưng một số ứng dụng cũng có thể quan tâm đến lớp này.
Các chức năng được mô tả dưới đây cung cấp giao diện chính cho mô-đun này. Nếu mô-đun chưa được khởi tạo, họ sẽ gọi init() nếu dựa vào thông tin init() thiết lập.
- mimetypes.guess_type(url, strict=True)¶
Đoán loại tệp dựa trên tên tệp, đường dẫn hoặc URL do url cung cấp. URL có thể là một chuỗi hoặc path-like object.
Giá trị trả về là một bộ
(type, encoding)trong đó type làNonenếu không thể đoán được loại (hậu tố bị thiếu hoặc không xác định) hoặc một chuỗi có dạng'type/subtype', có thể sử dụng cho tiêu đề MIME content-type.encoding là
Nonekhông có mã hóa hoặc tên của chương trình được sử dụng để mã hóa (ví dụ: compress hoặc gzip). Mã hóa phù hợp để sử dụng làm tiêu đề Content-Encoding, not làm tiêu đề Content-Transfer-Encoding. Các ánh xạ được điều khiển bằng bảng. Hậu tố mã hóa có phân biệt chữ hoa chữ thường; hậu tố loại đầu tiên được thử phân biệt chữ hoa chữ thường, sau đó phân biệt chữ hoa chữ thường.Đối số strict tùy chọn là một cờ xác định xem danh sách các loại MIME đã biết có bị giới hạn chỉ ở các loại registered with IANA chính thức hay không. Tuy nhiên, hoạt động của mô-đun này cũng phụ thuộc vào hệ điều hành cơ bản. Chỉ có thể xác định được các loại tệp được hệ điều hành công nhận hoặc được đăng ký rõ ràng với cơ sở dữ liệu nội bộ của Python. Khi strict là
True(mặc định), chỉ hỗ trợ các loại IANA; khi strict làFalse, một số loại MIME không chuẩn nhưng được sử dụng phổ biến cũng được nhận dạng.Thay đổi trong phiên bản 3.8: Đã thêm hỗ trợ cho url là path-like object.
Sắp loại bỏ từ phiên bản 3.13: Truyền đường dẫn tệp thay vì URL là soft deprecated. Sử dụng
guess_file_type()cho việc này.
- mimetypes.guess_file_type(path, *, strict=True)¶
Đoán loại tệp dựa trên đường dẫn của nó, được cung cấp bởi path. Tương tự như hàm
guess_type()nhưng chấp nhận đường dẫn thay vì URL. Đường dẫn có thể là một chuỗi, một đối tượng byte hoặc path-like object.Added in version 3.13.
- mimetypes.guess_all_extensions(type, strict=True)¶
Đoán các phần mở rộng cho một tệp dựa trên loại MIME của nó, được cung cấp bởi type. Giá trị trả về là danh sách các chuỗi cung cấp tất cả các phần mở rộng tên tệp có thể có, bao gồm cả dấu chấm ở đầu (
'.'). Các tiện ích mở rộng không được đảm bảo đã được liên kết với bất kỳ luồng dữ liệu cụ thể nào nhưng sẽ đượcguess_type()vàguess_file_type()ánh xạ tới loại MIME type.Đối số strict tùy chọn có ý nghĩa tương tự như với hàm
guess_type().
- mimetypes.guess_extension(type, strict=True)¶
Đoán phần mở rộng cho một tệp dựa trên loại MIME của nó, được cung cấp bởi type. Giá trị trả về là một chuỗi cung cấp phần mở rộng tên tệp, bao gồm dấu chấm ở đầu (
'.'). Tiện ích mở rộng không được đảm bảo đã được liên kết với bất kỳ luồng dữ liệu cụ thể nào nhưng sẽ đượcguess_type()vàguess_file_type()ánh xạ tới loại MIME type. Nếu không thể đoán được phần mở rộng nào cho type,Nonesẽ được trả về.Đối số strict tùy chọn có ý nghĩa tương tự như với hàm
guess_type().
Một số chức năng và mục dữ liệu bổ sung có sẵn để kiểm soát hoạt động của mô-đun.
- mimetypes.init(files=None)¶
Khởi tạo cấu trúc dữ liệu nội bộ. Nếu được cung cấp, files phải là một chuỗi tên tệp sẽ được sử dụng để tăng thêm bản đồ loại mặc định. Nếu bị bỏ qua, tên tệp sẽ sử dụng sẽ được lấy từ
knownfiles; trên Windows, cài đặt đăng ký hiện tại sẽ được tải. Mỗi tệp có tên trong files hoặcknownfilesđược ưu tiên hơn những tệp được đặt tên trước nó. Cho phép gọiinit()nhiều lần.Việc chỉ định một danh sách trống cho files sẽ ngăn việc áp dụng các giá trị mặc định của hệ thống: chỉ những giá trị nổi tiếng mới xuất hiện từ danh sách tích hợp sẵn.
Nếu files là
Nonethì cấu trúc dữ liệu bên trong sẽ được xây dựng lại hoàn toàn về giá trị mặc định ban đầu. Đây là một hoạt động ổn định và sẽ tạo ra kết quả tương tự khi được gọi nhiều lần.Thay đổi trong phiên bản 3.2: Trước đây, cài đặt đăng ký Windows đã bị bỏ qua.
- mimetypes.read_mime_types(filename)¶
Tải bản đồ loại được cung cấp trong tệp filename, nếu nó tồn tại. Bản đồ loại được trả về dưới dạng phần mở rộng tên tệp ánh xạ từ điển, bao gồm dấu chấm ở đầu (
'.'), thành các chuỗi có dạng'type/subtype'. Nếu tệp filename không tồn tại hoặc không thể đọc được,Nonesẽ được trả về.
- mimetypes.add_type(type, ext, strict=True)¶
Thêm ánh xạ từ loại MIME type vào phần mở rộng ext. Khi đã biết phần mở rộng, loại mới sẽ thay thế loại cũ. Khi loại đã được biết đến, tiện ích mở rộng sẽ được thêm vào danh sách các tiện ích mở rộng đã biết.
Khi strict là
True(mặc định), ánh xạ sẽ được thêm vào các loại MIME chính thức, nếu không thì sẽ thêm vào các loại không chuẩn.
- mimetypes.inited¶
Cờ cho biết cấu trúc dữ liệu chung đã được khởi tạo hay chưa. Điều này được đặt thành
Truebởiinit().
- mimetypes.knownfiles¶
Danh sách tên file bản đồ loại thường được cài đặt. Các tệp này thường được đặt tên là
mime.typesvà được cài đặt ở các vị trí khác nhau theo các gói khác nhau.
- mimetypes.suffix_map¶
Từ điển ánh xạ hậu tố tới hậu tố. Điều này được sử dụng để cho phép nhận dạng các tệp được mã hóa mà mã hóa và loại được biểu thị bằng cùng một phần mở rộng. Ví dụ: tiện ích mở rộng
.tgzđược ánh xạ tới.tar.gzđể cho phép mã hóa và loại được nhận dạng riêng biệt.
- mimetypes.encodings_map¶
Từ điển ánh xạ phần mở rộng tên tệp vào các loại mã hóa.
- mimetypes.types_map¶
Từ điển ánh xạ phần mở rộng tên tệp thành các loại MIME.
- mimetypes.common_types¶
Từ điển ánh xạ các phần mở rộng tên tệp thành các loại MIME không chuẩn nhưng thường thấy.
Một ví dụ sử dụng mô-đun:
>>> nhập mô phỏng
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'ứng dụng/x-tar-gz'
Đối tượng MimeTypes¶
Lớp MimeTypes có thể hữu ích cho các ứng dụng có thể muốn có nhiều cơ sở dữ liệu kiểu MIME; nó cung cấp một giao diện tương tự như giao diện của mô-đun mimetypes.
- class mimetypes.MimeTypes(filenames=(), strict=True)¶
Lớp này đại diện cho cơ sở dữ liệu kiểu MIME. Theo mặc định, nó cung cấp quyền truy cập vào cùng cơ sở dữ liệu với phần còn lại của mô-đun này. Cơ sở dữ liệu ban đầu là bản sao của cơ sở dữ liệu do mô-đun cung cấp và có thể được mở rộng bằng cách tải các tệp kiểu
mime.types- bổ sung vào cơ sở dữ liệu bằng các phương thứcread()hoặcreadfp(). Từ điển ánh xạ cũng có thể bị xóa trước khi tải dữ liệu bổ sung nếu không muốn có dữ liệu mặc định.Tham số filenames tùy chọn có thể được sử dụng để tải các tệp bổ sung "trên cùng" cơ sở dữ liệu mặc định.
- suffix_map¶
Từ điển ánh xạ hậu tố tới hậu tố. Điều này được sử dụng để cho phép nhận dạng các tệp được mã hóa mà mã hóa và loại được biểu thị bằng cùng một phần mở rộng. Ví dụ: tiện ích mở rộng
.tgzđược ánh xạ tới.tar.gzđể cho phép mã hóa và loại được nhận dạng riêng biệt. Ban đầu đây là bản sao củasuffix_maptoàn cầu được xác định trong mô-đun.
- encodings_map¶
Từ điển ánh xạ phần mở rộng tên tệp vào các loại mã hóa. Đây ban đầu là bản sao của
encodings_maptoàn cầu được xác định trong mô-đun.
- types_map¶
Bộ chứa hai từ điển, ánh xạ phần mở rộng tên tệp thành các loại MIME: từ điển đầu tiên dành cho các loại không chuẩn và từ điển thứ hai dành cho các loại tiêu chuẩn. Chúng được khởi tạo bởi
common_typesvàtypes_map.
- types_map_inv¶
Bộ chứa hai từ điển, ánh xạ các loại MIME vào danh sách các phần mở rộng tên tệp: từ điển đầu tiên dành cho các loại không chuẩn và từ điển thứ hai dành cho các loại tiêu chuẩn. Chúng được khởi tạo bởi
common_typesvàtypes_map.
- guess_extension(type, strict=True)¶
Tương tự như hàm
guess_extension(), sử dụng các bảng được lưu trữ như một phần của đối tượng.
- guess_type(url, strict=True)¶
Tương tự như hàm
guess_type(), sử dụng các bảng được lưu trữ như một phần của đối tượng.
- guess_file_type(path, *, strict=True)¶
Tương tự như hàm
guess_file_type(), sử dụng các bảng được lưu trữ như một phần của đối tượng.Added in version 3.13.
- guess_all_extensions(type, strict=True)¶
Tương tự như hàm
guess_all_extensions(), sử dụng các bảng được lưu trữ như một phần của đối tượng.
- read(filename, strict=True)¶
Tải thông tin MIME từ tệp có tên filename. Điều này sử dụng
readfp()để phân tích tệp.Nếu strict là
True, thông tin sẽ được thêm vào danh sách loại tiêu chuẩn, nếu không thì vào danh sách loại không chuẩn.
- readfp(fp, strict=True)¶
Tải thông tin loại MIME từ một tệp đang mở fp. Tệp phải có định dạng của tệp
mime.typestiêu chuẩn.Nếu strict là
True, thông tin sẽ được thêm vào danh sách loại tiêu chuẩn, nếu không thì vào danh sách loại không chuẩn.
- read_windows_registry(strict=True)¶
Tải thông tin loại MIME từ sổ đăng ký Windows.
sẵn có: Windows.
Nếu strict là
True, thông tin sẽ được thêm vào danh sách loại tiêu chuẩn, nếu không thì vào danh sách loại không chuẩn.Added in version 3.2.
- add_type(type, ext, strict=True)¶
Thêm ánh xạ từ loại MIME type vào phần mở rộng ext. Tiện ích mở rộng hợp lệ bắt đầu bằng dấu '.' hoặc đang trống rỗng. Khi đã biết phần mở rộng, loại mới sẽ thay thế loại cũ. Khi loại đã được biết đến, tiện ích mở rộng sẽ được thêm vào danh sách các tiện ích mở rộng đã biết.
Khi strict là
True(mặc định), ánh xạ sẽ được thêm vào các loại MIME chính thức, nếu không thì sẽ thêm vào các loại không chuẩn.Không được dùng nữa kể từ phiên bản 3.14, sẽ bị xóa trong phiên bản 3.16: Các tiện ích mở rộng không hợp lệ, không có dấu chấm sẽ tăng
ValueErrortrong Python 3.16.
Sử dụng dòng lệnh¶
Mô-đun mimetypes có thể được thực thi dưới dạng tập lệnh từ dòng lệnh.
python -m mimetypes [-h] [-e] [-l] gõ [loại ...]
Các tùy chọn sau được chấp nhận:
Theo mặc định, tập lệnh chuyển đổi loại MIME thành phần mở rộng tệp. Tuy nhiên, nếu --extension được chỉ định, nó sẽ chuyển đổi phần mở rộng tệp thành loại MIME.
Đối với mỗi mục nhập type, tập lệnh sẽ ghi một dòng vào luồng đầu ra tiêu chuẩn. Nếu xảy ra loại không xác định, nó sẽ ghi thông báo lỗi vào luồng lỗi tiêu chuẩn và thoát ra với mã trả về 1.
Ví dụ dòng lệnh¶
Dưới đây là một số ví dụ về cách sử dụng điển hình của giao diện dòng lệnh mimetypes:
$ # get một loại MIME theo tên tệp
$ python -m mimetypes filename.png
loại: mã hóa hình ảnh/png: Không có
$ # get một loại MIME bởi một URL
$ python -m mimetypes https://example.com/filename.txt
loại: văn bản/mã hóa thuần túy: Không có
$ # get một loại MIME phức tạp
$ python -m mimetypes tên tệp.tar.gz
loại: ứng dụng/x-tar mã hóa: gzip
$ # get một loại MIME dành cho phần mở rộng tệp hiếm
$ python -m mimetypes filename.pict
lỗi: phần mở rộng không xác định của filename.pict
$ # now tìm trong cơ sở dữ liệu mở rộng được tích hợp trong Python
$ python -m mimetypes --lenient filename.pict
loại: mã hóa hình ảnh/hình ảnh: Không có
$ # get một phần mở rộng tệp theo loại MIME
$ python -m mimetypes --extension văn bản/javascript
.js
$ # get một phần mở rộng tệp theo loại MIME hiếm
$ python -m mimetypes --extension văn bản/xul
lỗi: văn bản/xul loại không xác định
$ # now hãy tìm lại cơ sở dữ liệu mở rộng
$ python -m mimetypes --extension --lenient text/xul
.xul
$ # try để cung cấp phần mở rộng tệp không xác định
$ python -m mimetypes filename.sh filename.nc filename.xxx filename.txt
loại: mã hóa ứng dụng/x-sh: Không có
loại: mã hóa ứng dụng/x-netcdf: Không có
lỗi: phần mở rộng không xác định của filename.xxx
$ # try để nuôi một loại MIME không xác định
$ python -m mimetypes --extension audio/aac audio/opus audio/future audio/x-wav
.aac
.opus
lỗi: loại âm thanh/tương lai không xác định