python学习之函数进阶三
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之函数进阶三相关的知识,希望对你有一定的参考价值。
一、模块介绍 os模块常用方法 os.getcwd() #获取当前工作目录 os.listdir("F:\\") #获取指定目录下的所有文件和目录 os.remove(‘b.json‘) #删除指定文件 os.stat(‘a.json‘) #获取文件属性 os.chmod() #修改文件属性 os.mkdir(‘hyh‘) #创建目录 os.rmdir(‘hyh‘) #删除目录 os.system(‘dir‘) #运行shell命令 os._exit(2) #终止当前进程 os.path.split(‘/root/a.json‘) #返回路径的目录名和文件名组成的元组,(‘/root‘, ‘a.json‘) os.path.isfile(‘a.json‘) #校验是否是文件,是则返回True,否则返回False os.path.isdir(‘hyh‘) #校验是否是目录,是则返回True,否则返回False os.path.exists(‘hyh‘) #校验路径是否存在,是则返回True,否则返回False os.curdir #返回当前目录 os.chdir(‘hyh‘) #改变当前目录到‘hyh‘ print(os.path.abspath(‘.‘)) #获取指定目录的绝对路径 os.path.splitext(‘a.json‘) #分离文件名和扩展名,返回文件名和扩展名的元组,(‘a‘, ‘.json‘) os.path.join(‘\\root‘,‘a.json‘) #连接目录和文件,\root\a.json os.path.basename(‘/root/a.json‘) #返回文件名 os.path.dirname(‘/root/a.json‘) #返回目录名 sys模块常用方法 sys.argv #返回从外部传递的参数 sys.exit(2) #退出程序 sys.getdefaultencoding() #获取系统编码 sys.path #获取系统环境变量集合,可以将需要的模块或者变量添加进去 sys.platform #获取系统平台 hashlib模块常用方法 md5: 加密字符串 例子 import hashlib string = ‘hyonghui‘ m = hashlib.md5() m.update(string.encode(‘utf-8‘)) res = m.hexdigest() #把字符串摘要转换成16进制字符串 print(res) m1 = hashlib.md5(‘hyong‘.encode(‘utf-8‘)) m1.update(‘hui‘.encode(‘utf-8‘)) res1 = m1.hexdigest() print(res1) res和res1打印结果相同 sha256 # sha = hashlib.sha256() sha.update(string.encode(‘utf-8‘)) res = sha.hexdigest() print(res) sha1 = hashlib.sha256(‘hyong‘.encode(‘utf-8‘)) sha1.update(‘hui‘.encode(‘utf-8‘)) res1 = sha1.hexdigest() print(res1) pickle模块使用方法 pickle序列化和反序列化数据 例子: import pickle dic = {‘name‘: ‘alex‘, ‘age‘: 13} print(pickle.dumps(dic)) #dumps函数序列化dic with open(‘a.pkl‘, ‘wb‘) as f: f.write(pickle.dumps(dic)) with open(‘a.pkl‘, ‘rb‘) as f: res = pickle.loads(f.read()) #loads反序列化字符串成字典 print(res,type(res)) dic = {‘name‘: ‘alex‘, ‘age‘: 13} pickle.dump(dic, open(‘b.pkl‘, ‘wb‘)) res = pickle.load(open(‘b.pkl‘, ‘rb‘)) print(res,type(res)) import json import pickle def func(): print(‘from func‘) #json.dumps(func)# 报错,json不支持python的函数类型 f=pickle.dumps(func) print(f) pickle.dump(func,open(‘c.pkl‘,‘wb‘)) res=pickle.load(open(‘c.pkl‘,‘rb‘)) print(res) res() json模块使用方法 json序列化对象以字符串方式保存到文件,并且可以反序列化,可以跨语言 例子: 序列化 import json dic = { ‘name‘: ‘alex‘, ‘age‘: 9000, ‘height‘: ‘150cm‘ } res = json.dumps(dic) print(res,type(res)) with open(‘b.json‘, ‘w‘) as f: f.write(res) 反序列化 import json with open(‘b.json‘, ‘r‘) as f: dic = json.loads(f.read()) print(dic, type(dic)) shelve序列化 import shelve f = shelve.open(r‘sheve.txt‘) f[‘student‘] = {‘name‘: ‘alex‘, ‘age‘:18, ‘height‘:‘180cm‘} print(f[‘student‘][‘name‘]) f.close() random模块使用方法 random.random() #生成0~1的随机数,随机数大于0小于1 random.uniform(10,20) #生成指定范围的随机数,随机数大于m小于n random.randint(10,20) #生成指定范围的随机整数, 10<=n<=20 random.randrange(10,20,2) #生成指定范围的随机整数, 10<=n<20 步长是2 import random proxy_ip = [ ‘1.1.1.1‘, ‘2.2.2.2‘, ‘3.3.3.3‘, ‘4.4.4.4‘ ] v = random.choice(proxy_ip) #从序列中随机选取一个 print(v) list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(random.sample(list, 5)) #随机选取指定长度的元素组成新的列表 生成5位随机数代码 def v_code(n): res = ‘‘ for i in range(n): num = random.randint(0,9) s = chr(random.randint(65,90)) v = str(random.choice([num,s])) res += v print(res) v_code(5) time模块常用方法 time.time() #打印时间戳 print(time.localtime()) #结构化的时间 print(time.localtime().tm_year) time.strftime(‘%Y-%m-%d %H:%M:S‘, time.localtime()) #按照固定格式打印时间 time.ctime() #Mon Jun 5 14:55:03 2017 shutil模块常用方法 shutil实现文件复制功能 shutil.copyfile(‘a.json‘, ‘a.txt‘) #a.json为源文件,a.txt为目标文件 shutil.copyfileobj(open(‘a.json‘, ‘r‘), open(‘a.py‘, ‘w‘)) shutil.make_archive(‘data_bak‘, ‘gztar‘, root_dir=r‘E:\python\oldboyday6‘) #归档操作 压缩解压缩 import shutil shutil.copyfile(‘a.json‘, ‘a.txt‘) shutil.copyfileobj(open(‘a.json‘, ‘r‘), open(‘a.py‘, ‘w‘)) shutil.make_archive(‘data_bak‘, ‘gztar‘, root_dir=r‘E:\python\oldboyday6‘) import tarfile t= tarfile.open(‘data_bak.tar.gz‘, ‘r‘) t.extractall(‘extract_dir‘) t.close() subprocess模块常用方法 例子: import subprocess res = subprocess.Popen(‘dir‘, shell=True, stdout=subprocess.PIPE) #标准输出给管道 print(res) print(res.stdout.read().decode(‘gbk‘)) import subprocess res = subprocess.Popen(‘axlajsajen‘,shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) print(res) print(res.stdout.read()) print(res.stderr.read().decode(‘gbk‘)) import subprocess res1 = subprocess.Popen(r‘dir E:\python\oldboyday6‘,shell=True, stdout=subprocess.PIPE) res = subprocess.Popen(r‘findstr txt*‘, shell=True, stdin=res1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #res1输出传递给stdin print(res.stdout.read().decode(‘gbk‘)) xml模块常用方法介绍 xml模块解析xml文件 例子: import xml.etree.ElementTree as ET tree = ET.parse(‘country.xml‘) root = tree.getroot() #获取根标签对象 for i in root.iter(‘year‘): print(i.tag,i.text,i.attrib) #打印标签,标签内容,标签属性 year 2009 {‘update‘: ‘yes‘} print(root.find(‘country‘)) #找到第一个country标签所在位置 print(root.findall(‘country‘)) #找到所有country标签所在位置 for country in root: print(‘====>‘, country.attrib[‘name‘]) for item in country: print(item.tag, item.text, item.attrib) for i in root.iter(‘year‘): i.text = str(int(i.text) + 1) i.set(‘update‘, ‘yes‘) #给标签添加属性 tree.write(‘b.xml‘) #将country.xml的内容写到b.xml 生成xml文档 import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml, "name", attrib={‘enrolled‘: ‘yes‘}) age = ET.SubElement(name, ‘age‘, attrib={‘checked‘: ‘no‘}) sex = ET.SubElement(name, ‘sex‘) sex.text = ‘33‘ name2 = ET.SubElement(new_xml, ‘name‘, attrib={‘enrolled‘: ‘no‘}) age = ET.SubElement(name2, ‘age‘) age.text = ‘19‘ et = ET.ElementTree(new_xml) et.write(‘test.xml‘, encoding=‘utf-8‘,xml_declaration=True) ET.dump(new_xml) configparse模块方法介绍 配置文件a.ini [section1] k1 = v1 k2:v2 db=pymysql+mysql://egon:[email protected]/db1 max_conn=30 enable=1 [section2] k1 = v1 import configparser config = configparser.ConfigParser() config.read(‘a.ini‘) print(config.sections()) #得到所有的section,并以列表方式返回[‘section1‘, ‘section2‘] print(config.get(‘section1‘, ‘db‘)) #过滤含有db关键字的匹配项,pymysql+mysql://egon:[email protected]/db1 print(config.getint(‘section1‘,‘max_conn‘)) #和get函数相似,返回int类型 print(config.getboolean(‘section1‘, ‘enable‘)) #返回布尔值 print(config.has_option(‘section1‘, ‘enable‘)) #判断是否有enable配置项 print(config.remove_option(‘section1‘, ‘enable‘)) #删除某个配置 添加配置 import configparser config = configparser.ConfigParser() config.add_section(‘egon‘) config.set(‘egon‘,‘name‘,‘egon‘) config.set(‘egon‘, ‘age‘, ‘18‘) config.write(open(‘b.ini‘,‘w‘)) logging模块方法介绍 例子: import logging logging.basicConfig(filename=‘access.log‘, format=‘%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s‘, datefmt=‘%Y-%m-%d %H:%M:%S %p‘, level=40 ) logging.debug(‘debug‘) logging.info(‘info‘) logging.warning(‘warning‘) logging.error(‘error‘) logging.critical(‘critical‘)
本文出自 “linux技术” 博客,请务必保留此出处http://haoyonghui.blog.51cto.com/4278020/1932487
以上是关于python学习之函数进阶三的主要内容,如果未能解决你的问题,请参考以下文章