zoukankan      html  css  js  c++  java
  • 第四章、常用模块

    编辑本随笔

    (一)、os模块

    os.getcwd()#python解释器路径
    os.listdir('E:Code')#查看指定目录下的文件
    os.removedirs()#删除多个目录
    os.remove()#删除文件
    #判断是否为文件
    os.path.isfile()
    #
    判断是否为目录
    os.path.isdir()
    #
    判断是否为绝对路径
    print(os.path.isabs('E:Code'))
    #
    判断是否文件或目录存在
    print(os.path.exists('E:Code'))
    #
    分割文件名和路径
    print(os.path.split('E:CodePyCharmLufChapter04my_os.py'))
    #
    分割文件后缀
    print(os.path.splitext('E:CodePyCharmLufChapter04my_os.py'))
    #
    分割文件或目录所在磁盘
    print(os.path.splitdrive('E:CodePyCharmLufChapter04my_os.py'))
    #
    获取文件所在目录
    print(os.path.dirname('E:CodePyCharmLufChapter04my_os.py'))
    #
    获取绝对路径名
    print(os.path.abspath('E:CodePyCharmLufChapter04my_os.py'))
    #
    获取文件名
    print(os.path.basename('E:CodePyCharmLufChapter04my_os.py'))
    #
    运行shell命令,返回0为执行正确,非0表示执行错误
    os.system()
    #
    读取环境变量为HOME的值
    os.getenv('HOME')
    #
    获取操作系统所有环境变量
    os.environ
    #
    设置系统环境变量,有则返回,无则创建,只在当前terminal下有效,即当前程序
    os.environ.setdefault('HOME','/home/ya')
    #
    当前平台使用的行终止符
    os.linesep
    #
    获取当前系统平台
    os.name
    #
    重命名
    os.rename('old','new')
    #
    创建多级目录
    os.makedirs('C:pythonosmkdirs')
    #
    创建单个目录
    os.mkdir()
    #
    获取文件属性
    os.stat('E:CodePyCharmLufChapter04my_os.py')
    #
    修改文件权限与时间戳
    os.chmod('E:CodePyCharmLufChapter04my_os.py',777)
    #
    获取文件大小
    os.path.getsize()
    #
    结合目录名与文件名
    os.path.join()
    #
    改变工作目录
    os.chdir()
    #
    获取当前终端大小
    os.get_terminal_size()
    #
    终止当前进程,py3已无改方法
    os.exit()
    #
    杀死进程
    os.kill()

    (二)、sys模块

    #接收参数,传参数给脚本
    sys.argv()
    #
    退出程序,
    sys.exit(0)
    #python
    版本
    sys.version
    #int
    最大值
    sys.maxsize()
    #python
    模块搜索路径
    sys.path()
    #
    当前系统版本
    sys.pltform()
    #
    标准输出
    sys.stdout()
    #
    标准输入
    sys.stdin.readline()[:-1]
    #
    获取递归最大层数
    sys.getrecursionlimit()
    #
    设置递归最大层数
    sys.setrecursionlimit(120)
    #
    获取解释器默认编码
    sys.getdefaultencoding()
    #
    获取内存数据存到文件里的默认编码
    sys.getfilesystemencoding()

    (三)、time模块

    local_time=time.localtime()#获取当前本地时间(北京时间)
    # local_time.tm_year
    # local_time.tm_mon
    # local_time.tm_mday
    # local_time.tm_hour
    # local_time.tm_min
    # local_time.tm_sec
    # local_time.tm_wday weekday
    # local_time.tm_yday
    一年中的第几天
    # local_time.tm_isdst 是否为夏时令

    time.time()#获取当前时间戳
    time.gmtime()#类似localtime,将是一个时间戳转换为UTC时区
    time.mktime(t)#将一个struct_time转换为时间戳
    time.sleep()#将线程推迟指定时间,单位为秒
    time.asctime()#把一个表示时间的元组或者struct_time表示为'Sun Oct 1 120449 2017'格式,没有参数则将time.localtime()传入
    time.ctime()#把一个时间戳转换为time.asctime()形式,如果参数未给或为None时,将time.time()作为参数,先当于time.asctime(time.localtime(sec))
    time.strftime()#
    把一个表示时间的元组或者struct_time转化为格式化的时间字符串,未指定则将time.localtime()传入
    time.strptime()#把一个格式化时间字符串转换为struct_time,即将strftime()逆操作

    (四)、datetime模块

    import datetime
    """
    datetime.date#
    表示日期类,属性有yearmonthday
    datetime.time#
    表示时间类,常用属性有hourminutesecondmicrosecond
    datetime.datetime#
    表示日期时间
    datetime.timedelta#
    表示时间间隔
    datetime.tzinfo#
    与时区有关信息

    d=datetime.datetime.now()#
    返回当前的datetime日期类型
    d.timestamp()
    d.today()
    d.year
    d.timetuple()

    datetime.date.fromtimestamp()#
    把一个时间戳转换为datetime日期类型
    """
    #时间替换
    d=datetime.datetime.now()
    print(d)
    d=d.replace(year=2017)
    print(d)

    (五)、random模块

    import random
    random.randint(1,100)#
    x,y之间的随机数,包含起始值
    random.randrange(1,100)#x,y之间的随机数,不包含起始值
    random.random()#随机浮点数
    random.choice('aaabbccc')#从字符串中返回随机字符
    random.sample('aaaa',3)#从字符串中返回指定数量的字符
    random.shuffle("123456abc")#打乱字符串
    #生成随机字符串
    import string
    ''.join(random.sample(string.ascii_lowercase+string.digits+string.punctuation,16))

    (六)、shutil模块

    import shutil
    #
    将文件对象内容拷贝到另一个文件对象中
    f1=open('my_os.py','rb')
    f2=open('my_os_new.py','wb')
    shutil.copyfileobj(f1,f2)
    f1.close()
    f2.close()

    #
    拷贝文件
    shutil.copyfile()
    #
    仅拷贝权限,内容和组都不变
    shutil.copymode()
    #
    拷贝状态信息,包括mode bits,atime,mtime,flags
    shutil.copystat()
    #
    拷贝文件和权限
    shutil.copy()
    #
    拷贝文件和状态信息
    shutil.copy2()
    #
    拷贝文件目录
    shutil.copytree()
    #
    拷贝指定类型文件
    # shutil.ignore_patterns('*.pyc')忽略的文件,有则报错
    shutil.copytree('s','d',shutil.ignore_patterns('*.pyc'))
    #
    删除目录,ignore_errors忽略错误
    shutil.rmtree('path',ignore_errors=True)
    #
    递归式移动,重命名,剪切
    shutil.move()

    #
    压缩打包
    shutil.make_archive()
    #base_name:
    压缩包的文件名,也可以是路径,只是文件名则保存到当前目录,否则保存到指定路径
    #format:压缩包类型,ziptarbztargztar
    #root_dir:
    要压缩的文件夹路径,默认为当前目录
    #owner:用户,默认当前用户
    #group:组,默认为当前组
    #logger:用于记录日志,通常为logging.Logger对象
    #解压
    shutil.unpack_archive()
    #filename:
    解压的文件名
    #extract_dir:解压到指定路径
    #format:压缩包格式

    import zipfile
    z=zipfile.ZipFile("test.zip",'w')
    z.write('test.py')
    z.write('my_shutil.py')
    z.close()

    (七)、序列化模块

    把内存中的数据通过网络共享给别人

    把内存中的数据存入硬盘。json和pickle只能dump和load一次。

    1、json只能序列化str,int,tuple,list,dict。跨平台,跨语言

    定义了不同语言之间的交互规则,数据简洁

    import json
    #
    序列化,可dump多次,但数据会损坏
    json.dump(obj=None,fp='fileobj')#变成字符串并存入到文件对象
    json.dumps(obj=None)#将对象变成字符串赋值给变量,即存入内存。可写入硬盘或可通过网络发送。可以跨平台跨语言共享数据
    #反序列化,只能load一次
    json.load()#从文件对象中加载数据
    json.loads()#将字符串转换成相应类型

    处理非表准json数据时,可以使用https://pypi.org/project/demjson/

    2、pickle支持python里所有数据类型,只能在python中使用

    import pickle
    pickle.dump(data,file_obj)#
    二进制模式写入文件
    pickle.dumps()#转换成二进制数据
    pickle.load()#pkl文件中加载成对象
    pickle.loads()

    3、shelve,对pickle封装,可dump和load多次,仅支持python

    f=shelve.open('shelve')#打开数据文件,不要后缀名
    f.keys()
    f.items()
    f.get('name')#
    获取name对应的数据
    f.get('info')
    del
    f['name']#
    删除
    f['name']='new name'#可直接修改
    f.close()

    4、xml,通过<>来标记数据

    import xml.etree.ElementTree as ET
    tree=ET.parse('xml')
    root=tree.getroot()
    #
    遍历xml
    for child in root:
    print(child.tag,child.attrib)
    for
    i in child:
    print(i.tag,i.text)
    #
    只遍历year节点
    for node in root.iter('year'):
    print(node.tag,node.text)

    #
    修改
    for node in root.iter('year'):
    new_year=int(node.text)+1
    node.text=str(new_year)
    node.set('updated','yes')#
    添加一个属性
    tree.write('new_xml')
    #
    删除
    for country in root.findall('country'):
    rank=int(country.find('rank').text)
    if
    rank > 50:
    root.remove(country)
    tree.write('new_xml')

    (八)、configparser模块

    import configparser
    config=configparser.ConfigParser()
    config.read('conf.ini')
    print(config.sections())
    print(config.default_section)
    # #'clear', 'get', 'getboolean', 'getfloat', 'getint', 'items', 'keys', 'name', 'parser', 'pop', 'popitem', 'setdefault', 'update', 'values'
    # print(config['CLIENT'].keys())
    # print(config['CLIENT']['port'])

    #
    每个节点都会出现DEFAULT的内容
    for k in config['CLIENT']:
    print(k)

    for
    k,v in config['CLIENT'].items():
    print(k,v)

    #
    判断是否有某参数
    if 'server' in config['CLIENT']:print('in')

    #
    获取某节点的所有key
    print(config.options('group1'))

    #
    增加
    config.add_section('group3')
    config['group3']['name']='test'
    config['group3']['age']='18'
    config.write(open('t.ini','w'))
    #
    删除某一节点值
    config.remove_option('group1','k2')
    config.write(open('conf.ini','w'))
    #
    删除某一节点
    config.remove_section('group1')
    config.write(open('conf.ini','w'))

     (八)、加密模块

     

  • 相关阅读:
    [改善Java代码]养成良好习惯,显式声明UID
    [改善Java代码]警惕自增的陷阱
    [改善Java代码]覆写变长方法也循规蹈矩
    [改善Java代码]别让null值和空值威胁到变长方法
    [改善Java代码]避免带有变长参数的方法重载
    [改善Java代码]三元操作符的类型务必一致
    关于Windows下mysql忘记root密码的解决方法
    关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了
    关于关闭Eclipse的控制台自动跳出
    关于Windows下如何查看端口占用和杀掉进程
  • 原文地址:https://www.cnblogs.com/yaya625202/p/8672498.html
Copyright © 2011-2022 走看看