Hướng dẫn what type of file is python? - python là loại tệp nào?

Tôi có một thư mục đầy đủ các tệp và chúng không có tiện ích mở rộng. Làm cách nào để kiểm tra các loại tệp? Tôi muốn kiểm tra loại tệp và thay đổi tên tệp phù hợp. Giả sử một hàm filetype[x] trả về một loại tệp như png. Tôi muốn làm điều này:

files = os.listdir["."]
for f in files:
    os.rename[f, f+filetype[f]]

Làm thế nào để tôi làm điều này?

Martineau

Huy hiệu vàng 115K2525 gold badges160 silver badges284 bronze badges

Đã hỏi ngày 7 tháng 6 năm 2012 lúc 18:06Jun 7, 2012 at 18:06

9

Có các thư viện Python có thể nhận ra các tệp dựa trên nội dung của chúng [thường là số tiêu đề / phép thuật] và không dựa vào tên tệp hoặc tiện ích mở rộng.

Nếu bạn đang giải quyết nhiều loại tệp khác nhau, bạn có thể sử dụng python-magic. Đó chỉ là một ràng buộc Python cho thư viện ____10 được thiết lập tốt. Điều này có một danh tiếng tốt và [chứng thực nhỏ] trong việc sử dụng hạn chế mà tôi đã tạo ra, nó đã rất vững chắc.

Ngoài ra còn có các thư viện cho các loại tệp chuyên dụng hơn. Ví dụ: Thư viện tiêu chuẩn Python có mô -đun

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
1 làm điều tương tự chỉ cho các loại tệp hình ảnh.

Nếu bạn cần kiểm tra loại tệp không phụ thuộc [Pure Python], xem

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
2.

Phượng Hoàng

6.4884 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồng4 gold badges36 silver badges44 bronze badges

Đã trả lời ngày 7 tháng 6 năm 2012 lúc 18:43Jun 7, 2012 at 18:43

Chris Johnsonchris JohnsonChris Johnson

Huy hiệu vàng 19.6K677 Huy hiệu bạc77 Huy hiệu đồng6 gold badges77 silver badges77 bronze badges

3

Thư viện ma thuật Python cung cấp chức năng bạn cần.

Bạn có thể cài đặt thư viện với

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
3 và sử dụng nó như sau:

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'

Mã Python trong trường hợp này đang gọi đến Libmagic bên dưới mui xe, đây là cùng một thư viện được sử dụng bởi lệnh *NIX

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4. Do đó, điều này làm điều tương tự như các câu trả lời dựa trên quy trình/vỏ, nhưng không có chi phí đó.

Đã trả lời ngày 26 tháng 6 năm 2014 lúc 14:51Jun 26, 2014 at 14:51

RichardrichardRichard

51.8K30 Huy hiệu vàng169 Huy hiệu bạc243 Huy hiệu Đồng30 gold badges169 silver badges243 bronze badges

3

Trên Unix và Linux có lệnh

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4 để đoán các loại tệp. Thậm chí còn có một cổng Windows.

Từ trang người đàn ông:

Tệp kiểm tra từng đối số trong một nỗ lực để phân loại nó. Có ba bộ thử nghiệm, được thực hiện theo thứ tự này: kiểm tra hệ thống tập tin, kiểm tra số ma thuật và kiểm tra ngôn ngữ. Bài kiểm tra đầu tiên thành công khiến loại tệp được in.

Bạn sẽ cần chạy lệnh

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4 với mô -đun
>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
7 và sau đó phân tích các kết quả để tìm ra phần mở rộng.

Chỉnh sửa: Bỏ qua câu trả lời của tôi. Sử dụng câu trả lời của Chris Johnson thay thế. Ignore my answer. Use Chris Johnson's answer instead.

Đã trả lời ngày 7 tháng 6 năm 2012 lúc 18:12Jun 7, 2012 at 18:12

Steven Rumbalskisteven RumbalskiSteven Rumbalski

43.1k8 Huy hiệu vàng85 Huy hiệu bạc117 Huy hiệu đồng8 gold badges85 silver badges117 bronze badges

3

Trong trường hợp hình ảnh, bạn có thể sử dụng mô -đun

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
1.

>>> import imghdr
>>> imghdr.what['8e5d7e9d873e2a9db0e31f9dfc11cf47']  # You can pass a file name or a file object as first param. See doc for optional 2nd param.
'png'

Python 2 IMGHDR DOC PYTHON 3 IMGHDR DOC
Python 3 imghdr doc

Phượng Hoàng

6.4884 Huy hiệu vàng36 Huy hiệu bạc44 Huy hiệu đồng4 gold badges36 silver badges44 bronze badges

Đã trả lời ngày 7 tháng 6 năm 2012 lúc 18:43Oct 7, 2014 at 16:00

Chris Johnsonchris JohnsonLewis Diamond

Huy hiệu vàng 19.6K677 Huy hiệu bạc77 Huy hiệu đồng2 gold badges22 silver badges30 bronze badges

import subprocess as sub
p = sub.Popen['file yourfile.txt', stdout=sub.PIPE, stderr=sub.PIPE]
output, errors = p.communicate[]
print[output]

Thư viện ma thuật Python cung cấp chức năng bạn cần.

Bạn có thể cài đặt thư viện với

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
3 và sử dụng nó như sau:Jun 7, 2012 at 18:25

Mã Python trong trường hợp này đang gọi đến Libmagic bên dưới mui xe, đây là cùng một thư viện được sử dụng bởi lệnh *NIX

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4. Do đó, điều này làm điều tương tự như các câu trả lời dựa trên quy trình/vỏ, nhưng không có chi phí đó.xvatar

Đã trả lời ngày 26 tháng 6 năm 2014 lúc 14:5115 silver badges19 bronze badges

3

Richardrichard

51.8K30 Huy hiệu vàng169 Huy hiệu bạc243 Huy hiệu Đồng

Trên Unix và Linux có lệnh

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4 để đoán các loại tệp. Thậm chí còn có một cổng Windows.Aug 5, 2016 at 0:43

Từ trang người đàn ông:

import subprocess
import shlex

filename = 'your_file'
cmd = shlex.split['file --mime-type {0}'.format[filename]]
result = subprocess.check_output[cmd]
mime_type = result.split[][-1]
print mime_type

Tệp kiểm tra từng đối số trong một nỗ lực để phân loại nó. Có ba bộ thử nghiệm, được thực hiện theo thứ tự này: kiểm tra hệ thống tập tin, kiểm tra số ma thuật và kiểm tra ngôn ngữ. Bài kiểm tra đầu tiên thành công khiến loại tệp được in.Jun 6, 2014 at 3:14

Bạn sẽ cần chạy lệnh

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4 với mô -đun
>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
7 và sau đó phân tích các kết quả để tìm ra phần mở rộng.berniey

Chỉnh sửa: Bỏ qua câu trả lời của tôi. Sử dụng câu trả lời của Chris Johnson thay thế.1 gold badge16 silver badges8 bronze badges

2

Đã trả lời ngày 7 tháng 6 năm 2012 lúc 18:12

full_path = os.path.join[MEDIA_ROOT, pathfile]

try:
    image_data = open[full_path, "rb"].read[]
except IOError:
    return "Incorrect Request :[ !!!"

header_byte = image_data[0:3].encode["hex"].lower[]

if header_byte == '474946':
    return "image/gif"
elif header_byte == '89504e':
    return "image/png"
elif header_byte == 'ffd8ff':
    return "image/jpeg"
else:
    return "binary file"

Steven Rumbalskisteven Rumbalski

43.1k8 Huy hiệu vàng85 Huy hiệu bạc117 Huy hiệu đồngJul 6, 2019 at 10:36

Trong trường hợp hình ảnh, bạn có thể sử dụng mô -đun

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
1.evergreen

Python 2 IMGHDR DOC PYTHON 3 IMGHDR DOC2 gold badges15 silver badges25 bronze badges

2

Đã trả lời ngày 7 tháng 10 năm 2014 lúc 16:00

//pypi.org/project/sh/

Kim cương Lewis Diamondlewis

21.3k2 Huy hiệu vàng22 Huy hiệu bạc 30 Huy hiệu Đồng

sh.file["/root/file"]

Như Steven đã chỉ ra,

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
7 là cách. Bạn có thể nhận được đầu ra lệnh ở trên như bài đăng này đã nói

Đã trả lời ngày 7 tháng 6 năm 2012 lúc 18:25Feb 2, 2019 at 18:45

xvatarxvatarLelouch

3.12915 Huy hiệu bạc19 Huy hiệu đồng6 silver badges6 bronze badges

Bạn cũng có thể cài đặt ràng buộc chính thức

>>> import magic

>>> magic.from_file['iceland.jpg']
'JPEG image data, JFIF standard 1.01'

>>> magic.from_file['iceland.jpg', mime=True]
'image/jpeg'

>>> magic.from_file['greenland.png']
'PNG image data, 600 x 1000, 8-bit colormap, non-interlaced'

>>> magic.from_file['greenland.png', mime=True]
'image/png'
4 cho Python, một thư viện có tên
>>> import imghdr
>>> imghdr.what['8e5d7e9d873e2a9db0e31f9dfc11cf47']  # You can pass a file name or a file object as first param. See doc for optional 2nd param.
'png'
1 [nó không sử dụng CTYPE, như python-magic].

import magic
import glob
from os.path import isfile

ROOT_DIR = 'backup'
WANTED_EXTENSION = 'sqlite'

for filename in glob.iglob[ROOT_DIR + '/**', recursive=True]:
    if isfile[filename]:
        extension = magic.from_file[filename, mime = True]
        if WANTED_EXTENSION in extension:
            print[filename]

//gist.github.com/izmcm/6a5d6fa8d4ec65fd9851a1c06c8946ac

Nó có sẵn trên PYPI dưới dạng tập tin-Magic và trên Debian là Python-Magic. Đối với tôi, thư viện này là tốt nhất để sử dụng vì nó có sẵn trên PYPI và trên Debian [và có thể là các phân phối khác], giúp quá trình triển khai phần mềm của bạn dễ dàng hơn. Tôi cũng đã viết blog về cách sử dụng nó.Aug 30, 2021 at 21:28

0

Là .py là một tệp văn bản?

Tiện ích mở rộng PY có ý nghĩa đặc biệt cho câu lệnh nhập, tìm kiếm các mô -đun. Một mô -đun là [nói chung] một tệp văn bản có phần mở rộng .py [mặc dù nó có thể được biên dịch trước là. PYC] hoặc một thư mục chứa một tệp có tên __init__.py.A module is [generally] either a text file with a . py extension [though it may be precompiled as . pyc ] or a directory containing a file named __init__.py .

Làm cách nào để mở tệp .py?

Sử dụng lệnh Python để chạy các tập lệnh Python bằng lệnh Python, bạn cần mở một dòng lệnh và nhập từ Python, hoặc Python3 nếu bạn có cả hai phiên bản, theo sau là đường dẫn đến tập lệnh của bạn, giống như sau: $ python3Xin chào.open a command-line and type in the word python , or python3 if you have both versions, followed by the path to your script, just like this: $ python3 hello.py Hello World!

Hai loại tệp trong Python là gì?

Chủ yếu có hai loại tệp dữ liệu - tệp văn bản và tệp nhị phân.Một tệp văn bản bao gồm các ký tự có thể đọc được của con người, có thể được mở bởi bất kỳ trình soạn thảo văn bản nào.Mặt khác, các tệp nhị phân được tạo thành từ các ký tự và ký hiệu không thể đọc được con người, yêu cầu các chương trình cụ thể để truy cập nội dung của nó.text file and binary file. A text file consists of human readable characters, which can be opened by any text editor. On the other hand, binary files are made up of non-human readable characters and symbols, which require specific programs to access its contents.

Là .py là một tệp nhị phân?

Python có các công cụ để làm việc với các tệp nhị phân.Tệp nhị phân sử dụng chuỗi loại byte.Điều này có nghĩa là khi đọc dữ liệu nhị phân từ một tệp, một đối tượng loại byte được trả về.. Binary files use strings of type bytes. This means when reading binary data from a file, an object of type bytes is returned.

Bài Viết Liên Quan

Chủ Đề