8. Python自定义模块humansize

我们在提取一个文件元信息的时候,经常会使用到获取元信息的size, 但是默认提取出来的是字节为单位计算的大小,我们需要转换成MB或者GB 或者TB的大小。

因此就需要使用到humansize这个模块, 这个模块不是系统内置的, 你可以通过help()查询内置模块是没有这个的模块的。 需要从其他地方导入才可以进行使用。

将下面的文件保存成humansize.py 放在默认python目录下。

 1 ‘‘‘‘‘Convert file sizes to human-readable form.
 2
 3 Available functions:
 4 approximate_size(size, a_kilobyte_is_1024_bytes)
 5     takes a file size and returns a human-readable string
 6
 7 Examples:
 8 >>> approximate_size(1024)
 9 ‘1.0 KiB‘
10 >>> approximate_size(1000, False)
11 ‘1.0 KB‘
12
13 ‘‘‘
14
15 SUFFIXES = {1000: [‘KB‘, ‘MB‘, ‘GB‘, ‘TB‘, ‘PB‘, ‘EB‘, ‘ZB‘, ‘YB‘],
16             1024: [‘KiB‘, ‘MiB‘, ‘GiB‘, ‘TiB‘, ‘PiB‘, ‘EiB‘, ‘ZiB‘, ‘YiB‘]}
17
18 def approximate_size(size, a_kilobyte_is_1024_bytes=True):
19     ‘‘‘‘‘Convert a file size to human-readable form.
20
21     Keyword arguments:
22     size -- file size in bytes
23     a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
24                                 if False, use multiples of 1000
25
26     Returns: string
27
28     ‘‘‘
29     if size < 0:
30         raise ValueError(‘number must be non-negative‘)
31
32     multiple = 1024 if a_kilobyte_is_1024_bytes else 1000
33     for suffix in SUFFIXES[multiple]:
34         size /= multiple
35         if size < multiple:
36             return ‘{0:.1f} {1}‘.format(size, suffix)
37
38     raise ValueError(‘number too large‘)
39
40 if __name__ == ‘__main__‘:
41     print(approximate_size(1000000000000, False))
42     print(approximate_size(1000000000000))
43
44 # Copyright (c) 2009, Mark Pilgrim, All rights reserved.
45 #
46 # Redistribution and use in source and binary forms, with or without modification,
47 # are permitted provided that the following conditions are met:
48 #
49 # * Redistributions of source code must retain the above copyright notice,
50 #   this list of conditions and the following disclaimer.
51 # * Redistributions in binary form must reproduce the above copyright notice,
52 #   this list of conditions and the following disclaimer in the documentation
53 #   and/or other materials provided with the distribution.
54 #
55 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ‘AS IS‘
56 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
57 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
58 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
59 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
60 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
61 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
62 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
63 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
64 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
65 # POSSIBILITY OF SUCH DAMAGE. 
 该程序的功能是将以字节为单位的文件大小转换为以更易读形式,如将1024 B转换为1KB
 1 >>> import sys
 2 >>> import os
 3 >>> metadata = os.stat(‘test.docx‘)
 4 >>> metadata
 5 nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0L, st_nlink=0, st_uid=0, st_gid=0, st_size=4934265L, st_atime=1472518662L, st_mtime=1469435178L, st_ctime=1472518662L)
 6 >>> metadata.st_size
 7 4934265L
 8 >>> import humansize
 9 >>> humansize.approximate_size(metadata.st_size )
10 ‘4.0 MiB‘
11 >>> 
时间: 2024-10-08 12:08:34

8. Python自定义模块humansize的相关文章

发布和安装python自定义模块

这一篇说下如何发布和安装python自定义模块,版本:Python 2.7 . 1.创建setup.py 现在如果已经写好一个python文件,为了尽量简明,创建一个新的文件夹,把自己py文件放进去.接着在这个文件夹中创建一个名为 setup.py 的文件,用来表示模块的元数据,文件的内容类似下面这个样子.除了手工创建,有很多python编辑器也可以更简便的来创建这个文件,例如 pycharm. from distutils.core import setup setup( name='nest

python自定义模块

Python可以添加自定义模块 方法一:echo 'export PYTHONPATH='/root/pythondiy/' >> /root/.bashrc # 此目录为你模块的路径 # 然后使用sys模块查看环境变量 import sys sys.path          # 返回一个列表 ['',  '/usr/local/bin',  /root/pythondiy',  '/usr/local/lib/python27.zip',  '/usr/local/lib/python2.

Python 自定义模块位置

1.需要找出Python解释器从哪里查找模块: 具体方法: >>> import sys,pprint>>> pprint.pprint(sys.path)['', 'C:\\Python27\\lib\\site-packages\\jinja2-2.8-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\markupsafe-0.23-py2.7.egg', 'C:\\Python27\\lib\\site-packages

Python 自定义模块

自定义模块 什么是模块 :本质就是.py文件,是封装语句的最小单位. 自定义模块:实际上就是已定义.py文件 ,其中可以包含:函数定义,可执行语句,函数定义,统称为模块成员. 模块的运行方式 ① 脚本方式:直接用解释器执行,或者IDE(Pycharm)中运行 ② 模块方式:被其他的模块导入.此时作用是为导入它的模块提供资源.(变量,函数,类的定义等) Python 提供了一种可以判断自定义模块属于开发阶段还是使用阶段 __name__属性的使用 __name__ #以脚本方式运行时 __name

Python 自定义模块+参数传递

自定义模块lib\test.py  int a int b def add(a,b)     k=a+b return k k=add(a,d) print k 参数传递 >>>a=5  >>>b=6  >>>test.add(a,b) 11

Python自定义模块导入

在Python中经常会将不同功能的代码写到不同的package中,当一个package需要从另一个packageg中导入方法(或者说调用函数)时,则需要导入这个模块,否则,python是不知道这个被导入模块的路径的. 例如: 在day4面向对象这个文件夹下面,有三个模块(backend.logic.config)和一个python文件(user.main.py) 其中backend模块下包含有db模块和logic模块.而logic模块下有一个handle.py的文件,这个文件中定义了三个函数:

python :自定义模块添加路径

自己写一个pyhton模块每次在使用的时候加载自己的模块都说模块不存在,然后自己在网上找了一个总共有三中方法,都试了. 1:import sys sys.path.append("加入自己的模块路径"),  //这种方法我要吐槽很麻烦,每次都要重新加一次,受够了. 2:添加环境变量 //这个也不推荐,毕竟每次自己的模块都不是在同一个目录下. 3:找到python安装路径里的site-packages,如‘E:\pythonfile\Lib\site-packages’,然后在里面新建一

Python中引用自定义模块

学习了一小段时间的Python,始终停滞在简单的语法上,不能真正体会到Python的强大之处.今天学习了自定义模块的引用方法.当引用模块时,编译器会先在当前目录,接着去sys.path.Python的安装目录去寻找你引用的模块,如果没有的话,就会报错. 第一种情况,你的模块和你要使用的模块在同一目录下.Hello.py是一个模块,里面有一个打印Hello, World的方法Hello().test.py是一个测试程序,它将引用Hello.py中的hello()方法.因为它和模块在同一目录,所以可

python基础知识8——模块1——自定义模块和第三方开源模块

模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 内置模块 第三方开源模块 自定义模块 1.定义模块 2.导入模块 Python之所以应用越来越广泛,在一定程度上也