Bạn nên đảm bảo rằng "tệp" thực sự không phải là một thư mục trước khi kiểm tra tiện ích mở rộng. Một số câu trả lời ở trên không tính đến tên thư mục với các giai đoạn. [
It's an mp3
0 là một tên thư mục hợp lệ].Kiểm tra phần mở rộng của tệp:
import os
file_path = "C:/folder/file.mp3"
if os.path.isfile[file_path]:
file_extension = os.path.splitext[file_path][1]
if file_extension.lower[] == ".mp3":
print["It's an mp3"]
if file_extension.lower[] == ".flac":
print["It's a flac"]
Output:
It's an mp3
Kiểm tra phần mở rộng của tất cả các tệp trong một thư mục:
import os
directory = "C:/folder"
for file in os.listdir[directory]:
file_path = os.path.join[directory, file]
if os.path.isfile[file_path]:
file_extension = os.path.splitext[file_path][1]
print[file, "ends in", file_extension]
Output:
abc.txt ends in .txt
file.mp3 ends in .mp3
song.flac ends in .flac
So sánh phần mở rộng tệp với nhiều loại:
import os
file_path = "C:/folder/file.mp3"
if os.path.isfile[file_path]:
file_extension = os.path.splitext[file_path][1]
if file_extension.lower[] in {'.mp3', '.flac', '.ogg'}:
print["It's a music file"]
elif file_extension.lower[] in {'.jpg', '.jpeg', '.png'}:
print["It's an image file"]
Đầu ra:
It's a music file
Chúng ta có thể sử dụng hàm module splitext [] của Python OS để có được phần mở rộng tệp. Hàm này chia đường dẫn tệp thành một tuple có hai giá trị - root và phần mở rộng.
Nhận phần mở rộng tệp trong Python
Dưới đây là một chương trình đơn giản để có được phần mở rộng tệp trong Python.
import os
# unpacking the tuple
file_name, file_extension = os.path.splitext["/Users/pankaj/abc.txt"]
print[file_name]
print[file_extension]
print[os.path.splitext["/Users/pankaj/.bashrc"]]
print[os.path.splitext["/Users/pankaj/a.b/image.png"]]
Output::
- Trong ví dụ đầu tiên, chúng tôi đang giải nén trực tiếp các giá trị tuple cho hai biến.
- Lưu ý rằng tệp .bashrc không có phần mở rộng. Dấu chấm được thêm vào tên tệp để biến nó thành một tệp ẩn.
- Trong ví dụ thứ ba, có một dấu chấm trong tên thư mục.
Nhận tiện ích mở rộng tệp bằng mô -đun Pathlib
Chúng tôi cũng có thể sử dụng mô -đun Pathlib để có phần mở rộng tệp. Mô -đun này đã được giới thiệu trong bản phát hành Python 3.4.
>>> import pathlib
>>> pathlib.Path["/Users/pankaj/abc.txt"].suffix
'.txt'
>>> pathlib.Path["/Users/pankaj/.bashrc"].suffix
''
>>> pathlib.Path["/Users/pankaj/.bashrc"]
PosixPath['/Users/pankaj/.bashrc']
>>> pathlib.Path["/Users/pankaj/a.b/abc.jpg"].suffix
'.jpg'
>>>
Sự kết luận
Nó luôn luôn tốt hơn để sử dụng các phương thức tiêu chuẩn để có được phần mở rộng tệp. Nếu bạn đã sử dụng mô -đun OS, thì hãy sử dụng phương thức splitExt []. Đối với cách tiếp cận hướng đối tượng, sử dụng mô-đun pathlib.
Muốn tìm hiểu thêm? Tham gia cộng đồng DigitalOcean!
Tham gia cộng đồng DigitalOcean của chúng tôi miễn phí hơn một triệu nhà phát triển! Nhận trợ giúp và chia sẻ kiến thức trong phần Câu hỏi & Câu trả lời của chúng tôi, tìm hướng dẫn và công cụ sẽ giúp bạn phát triển như một nhà phát triển và mở rộng quy mô dự án hoặc doanh nghiệp của bạn, và đăng ký các chủ đề quan tâm.
Đăng ký
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
ĐọcMagic Numberis a constant value, used for the identification of a file. This method provides more flexibility in naming a file and does not mandatethe presence of an extension. Magic numbers are good for recognizing files, as sometimes a file may not have the correct file extension [or may not have one at all].
Bàn luậnPython Magic library to provide such capabilities to our program. To install the library, execute the following command in your operating system’s command interpreter:-
Cách chung để nhận ra loại tệp là xem phần mở rộng của nó. Nhưng đây nói chung là trường hợp. Loại tiêu chuẩn này để nhận dạng tệp bằng cách liên kết một tiện ích mở rộng với loại tệp được thực thi bởi một số họ hệ điều hành [chủ yếu là Windows]. Các hệ điều hành khác như Linux [và các biến thể của nó] sử dụng số ma thuật để nhận ra các loại tệp. Một số ma thuật là một giá trị không đổi, được sử dụng để xác định tệp. Phương pháp này cung cấp sự linh hoạt hơn trong việc đặt tên một tệp và không có sự hiện diện của một phần mở rộng. & nbsp; số ma thuật rất tốt để nhận dạng các tệp, vì đôi khi một tệp có thể không có phần mở rộng tệp chính xác [hoặc có thể không có một tệp nào cả].Trong bài viết này, chúng tôi sẽ học cách nhận biết các tệp bằng cách mở rộng của chúng, sử dụng Python. Chúng tôi sẽ sử dụng Thư viện Python Magic để cung cấp các khả năng như vậy cho chương trình của chúng tôi. Để cài đặt thư viện, hãy thực hiện lệnh sau trong Trình thông dịch lệnh hệ điều hành của bạn:-
________số 8file. But since it is saved with a .jpg extension, the operating system won’t be able to recognize its actual file type. So this file would be befitting for our program.
Python3
Đối với mục đích trình diễn, chúng tôi sẽ sử dụng tên tệp apple.jpg với các nội dung sau:-
It's an mp3
3It's an mp3
4It's an mp3
5It's an mp3
6Rõ ràng từ nội dung, tệp là một htmlfile. Nhưng vì nó được lưu với tiện ích mở rộng .jpg, hệ điều hành đã giành được có thể nhận ra loại tệp thực tế của nó. Vì vậy, tệp này sẽ phù hợp với chương trình của chúng tôi. & NBSP;
Output:
HTML document, ASCII text, with CRLF line terminators text/html
Explanation:
It's an mp3
1 It's an mp3
2Các
- Đầu tiên chúng tôi nhập thư viện ma thuật. & nbsp; sau đó chúng tôi sử dụng phương thức Magic.from_file [] để đạt được loại tệp có thể đọc được. Sau đó, chúng tôi sử dụng thuộc tính MIME = true để đạt được loại MIME của tệp. & NBSP;
- Nhận dạng loại tệp bằng cách sử dụng các tiện ích mở rộng cũng tồn tại trong các phiên bản mới hơn của thư viện.
- Do nhận dạng loại tệp thường xảy ra bằng cách tra cứu dấu vân tay của tiêu đề của tệp, nên không bắt buộc phải tải toàn bộ tệp để nhận dạng loại. Các phần nhỏ của các tệp cũng có thể được cung cấp dưới dạng đối số bằng Magic.From_Buffer [] và chuyển các byte ban đầu của tệp bằng cách sử dụng Open ['file.ext', 'rb']. Đọc [n] [chỉ được khuyến nghị nếu biết về Định dạng tiêu đề của loại tệp].