zoukankan      html  css  js  c++  java
  • 随机模块random、os模块、sys模块、shutil模块

    随机模块random

    随机模块的用法

    >>> random.randrange(1,10) #返回1-10之间的一个随机数,不包括10
    >>> random.randint(1,10) #返回1-10之间的一个随机数,包括10
    
    >>> random.randrange(0, 100, 2) #随机选取0到100间的偶数
    
    >>> random.random()  #返回一个随机浮点数
    >>> random.choice('abce3#$@1') #返回一个给定数据集合中的随机字符
    '#'
    
    >>> random.sample('abcdefghij',3)  #从多个字符中选取特定数量的字符
    ['a', 'd', 'b']
    
    #生成随机字符串
    import string 
    print(''.join(random.sample(string.ascii_letters + string.digits,6)))
    
    #洗牌
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> random.shuffle(a)
    >>> a
    [3, 0, 7, 2, 1, 6, 5, 8, 9, 4]

    os模块

    os 模块提供了很多允许你的程序与操作系统直接交互的功能

    os模块的用法

    得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
    返回指定目录下的所有文件和目录名:os.listdir()
    函数用来删除一个文件:os.remove()
    删除多个目录:os.removedirs(r“c:python”)
    检验给出的路径是否是一个文件:os.path.isfile()
    检验给出的路径是否是一个目录:os.path.isdir()
    判断是否是绝对路径:os.path.isabs()
    检验给出的路径是否真地存:os.path.exists()
    返回一个路径的目录名和文件名:os.path.split()     e.g os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt') 
    分离扩展名:os.path.splitext()       e.g  os.path.splitext('/usr/local/test.py')    结果:('/usr/local/test', '.py')
    获取路径名:os.path.dirname()
    获得绝对路径: os.path.abspath()  
    获取文件名:os.path.basename()
    运行shell命令: os.system()
    读取操作系统环境变量HOME的值:os.getenv("HOME") 
    返回操作系统所有的环境变量: os.environ 
    设置系统环境变量,仅程序运行时有效:os.environ.setdefault('HOME','/home/alex')
    给出当前平台使用的行终止符:os.linesep    Windows使用'
    ',Linux and MAC使用'
    '
    指示你正在使用的平台:os.name       对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
    重命名:os.rename(old, new)
    创建多级目录:os.makedirs(r“c:python	est”)
    创建单个目录:os.mkdir(“test”)
    获取文件属性:os.stat(file)
    修改文件权限与时间戳:os.chmod(file)
    获取文件大小:os.path.getsize(filename)
    结合目录名与文件名:os.path.join(dir,filename)
    改变工作目录到dirname: os.chdir(dirname)
    获取当前终端的大小: os.get_terminal_size()
    杀死进程: os.kill(10884,signal.SIGKILL)

    sys模块

    sys的使用方法

    sys.argv           #命令行参数List,第一个元素是程序本身路径
    sys.exit(n)        #退出程序,正常退出时exit(0)
    sys.version        #获取Python解释程序的版本信息
    sys.maxint         #最大的Int值
    sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    sys.platform       #返回操作系统平台名称
    sys.stdout.write('please:')  #标准输出 , 引出进度条的例子, 注,在py3上不行,可以用print代替
    val = sys.stdin.readline()[:-1] #标准输入
    sys.getrecursionlimit() #获取最大递归层数
    sys.setrecursionlimit(1200) #设置最大递归层数
    sys.getdefaultencoding()  #获取解释器默认编码
    sys.getfilesystemencoding  #获取内存数据存到文件里的默认编码
    #指定宽度
    # print('[%-15s]'%'#')
    # print('[%-15s]'%'##')
    # print('[%-15s]'%'###')
    # print('[%-15s]'%'####')
    # #打印
    # print('%s%%'%(100))#第二个%号代表取消第一个%的特殊意义
    # #可传参来控制宽度
    # print('[%%-%ds]'%50)
    # print(('[%%-%ds]'%50) %'#')
    # print(('[%%-%ds]'%50) %'##')
    # print(('[%%-%ds]'%50) %'###')
    

    打印进度条

    import time
    def progress(percent,width=50):
        if percent >=1:
            percent=1
        show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')
        print('
    %s %d%% '%(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')
    
    #应用
    data_size=102500
    recv_size=0
    while recv_size < data_size:
        time.sleep(0.01)
        recv_size+=1000
        percent=recv_size/data_size
        progress(percent,width=70)

    shutil模块

    shutil指的是对高级的 文件、文件夹、压缩包 处理模块处理模块

    shutil的使用方法

    shutil.copyfileobj(fsrc, fdst[, length])
    # 将文件内容拷贝到另一个文件中
    shutil.copyfileobj(open('a.txt','r'),open('b.txt','w'))
    
    shutil.copyfile(src, dst)
    # 拷贝文件 目标文件可以不存在
    shutil.copyfile('a.txt','c.txt')
    
    shutil.copymode(src, dst)
    #仅拷贝权限。内容、组、用户均不变
    shutil.copymode('f1.log', 'f2.log') #目标文件必须存在
    
    shutil.copystat(src, dst)
    #仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
    shutil.copystat('f1.log', 'f2.log') #目标文件必须存在
    
    shutil.copy(src, dst)
    #拷贝文件和权限
    shutil.copy('f1.log', 'f2.log')
    
    shutil.copy2(src, dst)
    #拷贝文件和状态信息
    shutil.copy2('f1.log', 'f2.log')
    
    shutil.ignore_patterns(*patterns)
    shutil.copytree(src, dst, symlinks=False, ignore=None)
    #递归的去拷贝文件夹
    shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除
    
    shutil.rmtree(path[, ignore_errors[, onerror]])
    递归的去删除文件
    shutil.rmtree('folder1')
    
    shutil.move(src, dst)
    递归的去移动文件,它类似mv命令,其实就是重命名
    shutil.move('folder1', 'folder3')

    shutil.make_archive(base_name, format,...)
    创建压缩包并返回文件路径,例如:zip、tar
    创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,

    如 data_bak =>保存至当前路径
    如:/tmp/data_bak =>保存至/tmp/

    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
    #将 /data 下的文件打包放置当前程序目录
    import shutil
    ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
    
    #将 /data下的文件打包放置 /tmp/目录
    import shutil
    ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')

    shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
    zipfile压缩&解压缩

    import zipfile
    
    # 压缩
    z = zipfile.ZipFile('laxi.zip', 'w')
    z.write('a.log')
    z.write('data.data')
    z.close()
    
    # 解压
    z = zipfile.ZipFile('laxi.zip', 'r')
    z.extractall(path='.')
    z.close()

    tarfile压缩&解压缩

    import tarfile
    
    # 压缩
    >>> t=tarfile.open('/tmp/egon.tar','w')
    >>> t.add('/test1/a.py',arcname='a.bak')
    >>> t.add('/test1/b.py',arcname='b.bak')
    >>> t.close()
    
    # 解压
    >>> t=tarfile.open('/tmp/egon.tar','r')
    >>> t.extractall('/egon')
    >>> t.close()
  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/9072847.html
Copyright © 2011-2022 走看看