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学习之函数进阶三的主要内容,如果未能解决你的问题,请参考以下文章

Python学习之函数进阶

python学习之函数学习进阶

python学习之函数学习进阶

python学习之函数学习进阶

Python学习之装饰器进阶

python学习之面向对象学习进阶