Tôi không biết đây có phải là câu trả lời tốt nhất nhưng nó đang hoạt động trong trường hợp của tôi. Hãy thoải mái xác minh giải pháp của tôi. Tôi đang làm việc lần đầu tiên với Python và những lời chỉ trích mang tính xây dựng được hoan nghênh ... cùng với phản hồi tích cực: D Đây là mã của tôi:
This is my code:
class Units:
def __init__[self]:
global si;
si = {
-18 : {'multiplier' : 10 ** 18, 'prefix' : 'a'},
-17 : {'multiplier' : 10 ** 18, 'prefix' : 'a'},
-16 : {'multiplier' : 10 ** 18, 'prefix' : 'a'},
-15 : {'multiplier' : 10 ** 15, 'prefix' : 'f'},
-14 : {'multiplier' : 10 ** 15, 'prefix' : 'f'},
-13 : {'multiplier' : 10 ** 15, 'prefix' : 'f'},
-12 : {'multiplier' : 10 ** 12, 'prefix' : 'p'},
-11 : {'multiplier' : 10 ** 12, 'prefix' : 'p'},
-10 : {'multiplier' : 10 ** 12, 'prefix' : 'p'},
-9 : {'multiplier' : 10 ** 9, 'prefix' : 'n'},
-8 : {'multiplier' : 10 ** 9, 'prefix' : 'n'},
-7 : {'multiplier' : 10 ** 9, 'prefix' : 'n'},
-6 : {'multiplier' : 10 ** 6, 'prefix' : 'u'},
-5 : {'multiplier' : 10 ** 6, 'prefix' : 'u'},
-4 : {'multiplier' : 10 ** 6, 'prefix' : 'u'},
-3 : {'multiplier' : 10 ** 3, 'prefix' : 'm'},
-2 : {'multiplier' : 10 ** 2, 'prefix' : 'c'},
-1 : {'multiplier' : 10 ** 1, 'prefix' : 'd'},
0 : {'multiplier' : 1, 'prefix' : ''},
1 : {'multiplier' : 10 ** 1, 'prefix' : 'da'},
2 : {'multiplier' : 10 ** 3, 'prefix' : 'k'},
3 : {'multiplier' : 10 ** 3, 'prefix' : 'k'},
4 : {'multiplier' : 10 ** 3, 'prefix' : 'k'},
5 : {'multiplier' : 10 ** 3, 'prefix' : 'k'},
6 : {'multiplier' : 10 ** 6, 'prefix' : 'M'},
7 : {'multiplier' : 10 ** 6, 'prefix' : 'M'},
8 : {'multiplier' : 10 ** 6, 'prefix' : 'M'},
9 : {'multiplier' : 10 ** 9, 'prefix' : 'G'},
10 : {'multiplier' : 10 ** 9, 'prefix' : 'G'},
11 : {'multiplier' : 10 ** 9, 'prefix' : 'G'},
12 : {'multiplier' : 10 ** 12, 'prefix' : 'T'},
13 : {'multiplier' : 10 ** 12, 'prefix' : 'T'},
14 : {'multiplier' : 10 ** 12, 'prefix' : 'T'},
15 : {'multiplier' : 10 ** 15, 'prefix' : 'P'},
16 : {'multiplier' : 10 ** 15, 'prefix' : 'P'},
17 : {'multiplier' : 10 ** 15, 'prefix' : 'P'},
18 : {'multiplier' : 10 ** 18, 'prefix' : 'E'},
}
def convert[self, number]:
# Checking if its negative or positive
if number < 0:
negative = True;
else:
negative = False;
# if its negative converting to positive [math.log[]....]
if negative:
number = number - [number*2];
# Taking the exponent
exponent = int[math.log10[number]];
# Checking if it was negative converting it back to negative
if negative:
number = number - [number*2];
# If the exponent is smaler than 0 dividing the exponent with -1
if exponent < 0:
exponent = exponent-1;
return [number * si[exponent]['multiplier'], si[exponent]['prefix']];
# If the exponent bigger than 0 just return it
elif exponent > 0:
return [number / si[exponent]['multiplier'], si[exponent]['prefix']];
# If the exponent is 0 than return only the value
elif exponent == 0:
return [number, ''];
Và đây là cách nó hoạt động:
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
Và phản hồi là:
118.9404
p
[-40.72375, 'M']
[19.435959999999998, 'u']
Tôi không biết có ai sẽ thấy điều này hữu ích hay không. Tôi hy vọng bạn làm. Tôi đã đăng ở đây để những người muốn giúp đỡ để xem nó cũng cho họ ý tưởng có thể họ có thể tối ưu hóa nó :]
Hình ảnh: Pixabay Hầu hết mọi người đều quen thuộc với một vài tiền tố phổ biến hơn được sử dụng trước nhiều đơn vị để biểu thị một phần hoặc bội số của đơn vị - kg, megabyte, centimet, v.v. lên đến Yotta và ngay xuống Yocto. Như một bài tập đơn giản nhưng hy vọng sẽ khai sáng, tôi đã tập hợp chương trình Python ngắn này để liệt kê tất cả các tiền tố cùng với
Kiểm tra xem tệp có tồn tại trước khi kiểm tra kích thước của tệp không Ví dụ hoàn chỉnh như sau, 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. Đầu ra: Nhận kích thước của một tệp trong Gigabyte & NBSP; tức là GB Kiểm tra xem tệp có tồn tại trước khi kiểm tra kích thước của tệp không 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, Đầu ra:Nếu tệp không tồn tại ở đường dẫn đã cho, thì tất cả các chức năng được tạo ở trên để nhận kích thước tệp có thể gây ra lỗi. Do đó, trước tiên chúng ta nên kiểm tra xem tệp có tồn tại hay không, nếu có thì chỉ kiểm tra kích thước của nó,
Vì tệp ‘dummy_file.txt, không tồn tại, vì vậy chúng ta không thể tính toán kích thước của nó.
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]
File size in bytes : 166908268
Nhận kích thước của một tập tin trong Megabyte & NBSP; tức là MB
os.stat[path, *, dir_fd=None, follow_symlinks=True]
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]
File size in bytes : 166908268
Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
Hãy để sử dụng mô -đun Pathlib để có được kích thước của một tệp trong byte,
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:
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
0Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
Hãy để sử dụng mô -đun Pathlib để có được kích thước của một tệp trong byte,
Trong 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.
1 Megabyte == 1024*1024 Bytes
1 GigaByte == 1024*1024*1024 Bytes
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]
Chúng tôi đã tạo ra một hàm để chuyển đổi byte thành kilobyte [kb], megabyte [MB] hoặc gigabyte [gb], tức là.
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
2c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
1 Hãy để tạo ra một chức năng để có được kích thước tệp trong các đơn vị kích thước khác nhau. Hàm này sử dụng nội bộ cho hàm trên để chuyển đổi byte thành đơn vị kích thước đã cho,
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
3Đầu ra:
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
4Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
5Đầu ra:
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
6Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
7Đầu ra:
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
8Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
Hãy để sử dụng mô -đun Pathlib để có được kích thước của một tệp trong byte,
c1 = +1.189404E-010
fres = -4.07237500000000E+007;
ls = +1.943596E-005;
units = sci.Units[];
rValue, rPrefix = units.convert[c1];
print rValue;
print rPrefix;
print units.convert[fres];
print units.convert[ls];
9Đầu ra:
118.9404
p
[-40.72375, 'M']
[19.435959999999998, 'u']
0Nhận kích thước tệp tính bằng byte bằng pathlib.path.stat []. St_size
Hãy để sử dụng mô -đun Pathlib để có được kích thước của một tệp trong byte,
118.9404
p
[-40.72375, 'M']
[19.435959999999998, 'u']
1Output:
118.9404
p
[-40.72375, 'M']
[19.435959999999998, 'u']
2