Given:
>>> sizes = ['999.992 MB', '2.488 GB', '401 KB']
Đầu tiên đồng ý về ý nghĩa của 'độ chính xác'. Vì đầu vào của bạn là một chiếc phao, nên một giả định công bằng rằng 'độ chính xác' được giới hạn trong độ chính xác đầu vào.
Để tính toán, trước tiên hãy chuyển đổi thành byte cơ sở [biết mặc dù độ chính xác thực tế của bạn không tốt hơn độ chính xác đầu vào]:
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
Sau đó chuyển đổi thành cường độ mong muốn:
>>> sd='GB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.98 GB', '2.5 GB', '0.00038 GB']
>>> sd='MB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['1e+03 MB', '2.5e+03 MB', '0.39 MB']
>>> sd='TB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.00095 TB', '0.0024 TB', '3.7e-07 TB']
Trong bài viết này, chúng tôi sẽ thảo luận về các cách khác nhau để có được kích thước tệp ở các định dạng có thể đọc được của con người như byte, kilobyte [KB], megabyte [MB], gigabyte [GB], v.v. Nó chấp nhận đường dẫn tệp làm đối số và trả về kích thước của một tệp tại đường dẫn đã cho trong byte. Nếu tệp không tồn tại ở đường dẫn đã cho hoặc nó không thể truy cập được, thì nó sẽ tăng OS.Error. Do đó, luôn luôn kiểm tra liệu tệp có tồn tại hay không trước khi gọi chức năng này. Hãy để sử dụng chức năng này để có được kích thước của một tệp trong byte,Các cách khác nhau để có được kích thước tệp tính bằng byte
Nhận kích thước tệp tính bằng byte bằng os.path.getSize []
os.path.getsize[path]
If the file doesn’t exist at the given path or it is inaccessible, then it raises an os.error. Therefore, always check that file exist or not before calling this function.
import os def get_file_size_in_bytes[file_path]: """ Get size of file at given path in bytes""" size = os.path.getsize[file_path] return size file_path = 'big_file.csv' size = get_file_size_in_bytes[file_path] print['File size in bytes : ', size]
Đầu ra:
File size in bytes : 166908268
Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
Mô -đun HĐH Python cung cấp một chức năng để có được số liệu thống kê tệp,
os.stat[path, *, dir_fd=None, follow_symlinks=True]
Nó chấp nhận đường dẫn tệp [một chuỗi] làm đối số và trả về một đối tượng của stat cấu trúc, chứa các thuộc tính khác nhau về tệp tại một đường dẫn nhất định. Một trong những thuộc tính là st_size, có kích thước của tệp tính bằng byte.
Quảng cáo
Hãy để sử dụng chức năng này để có được kích thước của một tệp trong byte,
import os def get_file_size_in_bytes_2[file_path]: """ Get size of file at given path in bytes""" # get statistics of the file stat_info = os.stat[file_path] # get size of file in bytes size = stat_info.st_size return size file_path = 'big_file.csv' size = get_file_size_in_bytes_2[file_path] print['File size in bytes : ', size]
Đầu ra:
File size in bytes : 166908268
Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
Mô -đun HĐH Python cung cấp một chức năng để có được số liệu thống kê tệp,
from pathlib import Path def get_file_size_in_bytes_3[file_path]: """ Get size of file at given path in bytes""" # get file object file_obj = Path[file_path] # Get file size from stat object of file size = file_obj.stat[].st_size return size file_path = 'big_file.csv' size = get_file_size_in_bytes_3[file_path] print['File size in bytes : ', size]
Đầu ra:
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
0Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
Mô -đun HĐH Python cung cấp một chức năng để có được số liệu thống kê tệp,
Nó chấp nhận đường dẫn tệp [một chuỗi] làm đối số và trả về một đối tượng của stat cấu trúc, chứa các thuộc tính khác nhau về tệp tại một đường dẫn nhất định. Một trong những thuộc tính là st_size, có kích thước của tệp tính bằng byte.
1 Megabyte == 1024*1024 Bytes
1 GigaByte == 1024*1024*1024 Bytes
Quảng cáo
Hãy để sử dụng mô -đun Pathlib để có được kích thước của một tệp trong byte,
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
2Trong tất cả các kỹ thuật trên, chúng tôi có kích thước tệp trong byte. Điều gì sẽ xảy ra nếu chúng ta muốn kích thước tệp ở định dạng có thể đọc được của con người như, killobyte, megabyte hoặc gigabyte, v.v.
Nhận kích thước tệp trong các đơn vị có thể đọc được như Kilobyte [KB], megabyte [MB] hoặc gigabyte [GB]
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
3Đầu ra:
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
4Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
5Đầu ra:
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
6Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
7Đầu ra:
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
8Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
Mô -đun HĐH Python cung cấp một chức năng để có được số liệu thống kê tệp,
>>> defs={'KB':1024, 'MB':1024**2, 'GB':1024**3, 'TB':1024**4}
>>> bytes=[float[lh]*defs[rh] for lh, rh in [e.split[] for e in sizes]]
>>> bytes
[1048567611.392, 2671469658.112, 410624.0]
9Đầu ra:
>>> sd='GB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.98 GB', '2.5 GB', '0.00038 GB']
>>> sd='MB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['1e+03 MB', '2.5e+03 MB', '0.39 MB']
>>> sd='TB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.00095 TB', '0.0024 TB', '3.7e-07 TB']
0Nhận kích thước tệp tính bằng byte bằng os.stat []. St_size
Ví dụ hoàn chỉnh như sau,
>>> sd='GB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.98 GB', '2.5 GB', '0.00038 GB']
>>> sd='MB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['1e+03 MB', '2.5e+03 MB', '0.39 MB']
>>> sd='TB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.00095 TB', '0.0024 TB', '3.7e-07 TB']
1Output:
>>> sd='GB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.98 GB', '2.5 GB', '0.00038 GB']
>>> sd='MB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['1e+03 MB', '2.5e+03 MB', '0.39 MB']
>>> sd='TB'
>>> ['{:0.2} {}'.format[e/defs[sd], sd] for e in bytes]
['0.00095 TB', '0.0024 TB', '3.7e-07 TB']
2