设为首页 收藏本站
查看: 746|回复: 0

[经验分享] python常用模块收录

[复制链接]

尚未签到

发表于 2018-8-5 07:04:51 | 显示全部楼层 |阅读模式
  time模块:
  在python中,通常有以下几种方式来表示时间:
  1、时间戳,如time.time
  2、格式化的时间字符串,如'17/01/2017 10:17:00'
  3、元组(struct_time),如gmtime、localtime等等
  time.time():把从1970年开始到现在的所有时间转换成秒数,即时间戳
  time.gmtime():将时间戳(秒数)转换成UTC时区的元组形式
  time.localtime():将时间戳转换成当地时区的元组形式
  这种元组形式的时间可以通过其内部的方法取得需要的时间元素。例:
  x = time.localtime()
  x.tm_year可以取得当前是哪一年
  x.tm_mon可以取得当前是哪一月
  x.tm_mday可以取得当前是哪一天
  time.sleep(s):睡眠s秒
  time.mktime(t):将元组(tuple)形式的时间转换成时间戳
  time.strftime(format [, tuple]):
  将元组形式的时间转换成格式化的时间字符串(用数字方式显示),若不指定tuple则转换当前的localtime
  time.strptime(string, format):将格式化的时间字符串转换成元组形式的时间
  time.asctime([tuple]):
  将元组形式的时间转换成格式化的时间字符串(用英文方式显示),若不指定tuple则转换当前的localtime
  time.ctime([seconds]):
  将时间戳转换成格式化的时间字符串(用英文方式显示),若不指定时间戳则转换当前的时间戳
  datetime模块:
  datetime.datetime.now():取得当前的日期与时间
  datetime.datetime.now() + datetime.datetime.delta(3):取得三天后的当前时间
  datetime.datetime.now() + datetime.datetime.delta(-3):取得三天前的当前时间
  datetime.datetime.now() + datetime.datetime.delta(hours=3):取得三小时后的当前时间
  datetime.datetime.now() + datetime.datetime.delta(hours=-3):取得三小时前的当前时间
  datetime.datetime.now().replace(minute=10,hour=10):时间替换
  random模块:随机数
  random.random():取得0-1之间的浮点随机数
  random.uniform(1,10):取得1-10之间的浮点随机数,1和10可以任意指定
  random.randint(1,3):取得1-3之间的任意随机数,包括1和3,这里的1和3可以任意指定
  random.randrange(1,3):取得1-3之间的任意随机数,不包括3,这里的1和3可以任意指定
  random.choice('equence):从序列sequence中随机取一个元素
  random.sample(sequence,count):每次从序列sequence中随机取count个元素
  random.shuffle(sequence):洗牌,将一个序列的顺序打乱
  os模块:提供对操作系统进行调用的接口
  os.getcwd():获取当前工作目录
  os.chdir(path):切换目录
  os.curdir:返回当前目录
  os.pardir:返回当前目录的父目录
  os.makedirs(name, mode=511, exist_ok=False):递归创建目录
  例:os.makedirs(r'/a/b/c/d/e')
  os.removedirs(name):若目录为空则删除,并递归到上一级目录,若还是为空则再删除,依此类推
  os.mkdir(path, mode=511, *, dir_fd=None):创建单级目录,若父目录不存在则抛出异常
  os.rmdir(path, *, dir_fd=None):删除单级空目录,若目录不为空则抛出异常
  os.listdir(path=None):列出某路径下的所有文件,包括文件和目录
  os.remove():删除一个文件
  os.rename('oldname','newname'):重命名文件/目录
  os.stat('path/to/filename'):获取文件/目录信息
  os.sep:输出操作系统特定的路径分隔符,win下为’\\',linux下为'/'
  os.linesep:输出当前平台使用的行终止符,win下为'\r\n',linux下为'\n'
  os.pathsep:输出用于分割文件路径的字符串,存放多个路径的时候区分不同路径时用的分隔符
  os.name:输出字符串指示当前使用平台。win-->'nt',linux-->'posix'
  os.system('bash command'):运行shell命令,直接显示结果,返回值为命令执行的状态码
  os.popen('bash command'):运行shell命令,命令结果作为返回值返回并打印至屏幕
  os.startfile('/path/to/file'):以图形化方式打开一个程序,只适用于windows
  os.environ:获取系统环境变量
  os.urandom(n):返回指定n字节的加密强随机数据
  os.path.abspath(path):返回path规范化的绝对路径
  os.path.split(path):返回将path分割成以目录和文件名作为元素的2元素元组
  os.path.dirname(path):返回path的目录。其实就是os.path.split(path)的第一个元素
  os.path.basename(path):返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。
  其实就是os.path.split(path)的第二个元素
  os.path.exists(path):判断path是否存在,存在返回True,否则返回False
  os.path.isabs(path):判断path是不是一个绝对路径,是则返回True,否则返回False
  os.path.isfile(path):判断path是不是一个文件,是则返回True,否则返回False
  os.path.isdir(path):判断path是不是一个目录,是则返回True,否则返回False
  os.path.join(path1 [, path2 [, ...]]):
  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  os.path.getatime(path):返回path所指向的文件或目录的最后存取时间
  os.path.getmtime(path):返回path所指向的文件或目录的最后修改时间
  sys模块:提供对python进行调用的接口
  sys.argv:命令行参数list,第一个元素是程序本身路径
  sys.exit(n):退出程序,正常退出时exit(0),n可以是数字也可以是字符串
  sys.version:获取python解释程序的版本信息
  sys.maxint:最大的int值
  sys.path:返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  sys.platform:返回操作系统平台名称
  sys.stdout.write('please: ')
  va1 = sys.stdin.readline()[:-1]
  sys.modules:返回当前系统已加载的所有模块信息字典
  fileinput:遍历文本文件所有的行
  fileinput.input(/path/to/file):返回一个可迭代的文件流类的实例对象
  fileinput.filename():返回当前文件名
  fileinput.lineno():返回当前行号
  fileinput.filelineno():返回文件行数
  fileinput.isfirstline():判断当前行是不是文件的第一行
  fileinput.isstdin():检查最后一行是否来自于标准输入流
  fileinput.nextfile():关闭当前文件并将指针移动到下一个文件
  fileinput.close():关闭所有已打开的文件
  shutil:专门用来copy文件,可以压缩包
  shutil.copyfileobj(fsrc,fdst [, length]):
  将ffsrc的内容拷贝至fdst中,可以通过length设置拷贝多少内容
  shutil.copyfile(src,dst):拷贝src至dst
  shutil.copymode(src,dst):仅拷贝权限。新文件的内容、组、用户均不变(谁创建的文件就是谁的)
  shutil.copystat(src,dst):拷贝状态的信息,包括mode bits,atime,mtime,flags
  shutil.copy(src,dst):拷贝文件和权限
  shutil.copy2(src,dst):拷贝文件和状态信息
  shutil.copytree(src,dst,symlink=False,ignore=None):递归的去拷贝文件
  shutil.rmtree(path [, ignore_errors [, onerror]]):递归的去删除文件
  shutil.move(src,dst):递归的去移动文件
  shutil.make_archive(base_name,format,...):创建压缩包并返回文件路径,例如:zip、tar
  base_name:
  压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径。
  如:www => 保存至当前路径
  如:/Users/sean/www => 保存至/Users/sean/www
  format:压缩包种类。'zip'、'tar'、'bztar'、'gztar'
  root_dir:要压缩的目录路径(默认当前目录)
  owner:用户。默认当前用户
  group:组。默认当前组
  logger:用于记录日志。通常是logging.Logger对象
  shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的。
  zipfile模块:
  压缩:
  z = zipfile.ZipFile('test.zip','w')
  z.write('a.log')
  z.write('data.data')
  z.close()
  解压:
  z = zipfile.ZipFile('test.zip','r')
  z.extractall()
  z.close()
  tarfile模块:
  压缩:
  tar = tarfile.open('your.tar','w')
  tar.add('/Users/sean/www.zip',arcname='www.zip')
  tar.add('/Users/sean/cmdb.zip',arcname='cmdb.zip')
  tar.close()
  解压:
  tar = tarfile.open('your.tar','r')
  tar.extractall()
  tar.close()
  json & pickle:用于序列化的两个模块
  json,用于字符串和python数据类型间进行转换
  把python内存中的数据类型转换成字符串存储在硬盘的文件上
  解决了不同语言、不同平台之间的数据交换问题。
  pickle,用于python特有的类型和python的数据类型间进行转换
  把python内存中的任意数据类型转换成字符串存储在硬盘的文件上
  两者均提供了四个功能:dumps、dump、loads、load
  dumps和loads直接在内存中操作,不对文件进行操作
  dump和load会对文件进行操作:写入和读取
  shelve:一个简单的字典类型的(key,value),将内存数据通过文件持久化存储的模块
  可以持久化存储任何pickle可支持的python数据类型
  写入:
d = shelve.open('shelve_test')#打开一个文件  
class Test(object):
  
    def __init__(self,n):
  
        self.n = n
  
t = Test(123)
  
t2 = Test(1234567)
  
name = ['tom','jerry','test']
  
d['test'] = name  #持久化列表
  
d['t1'] = t  #持久化类
  
d['t2'] = t2
  
d.close()
  读取:
d.get('test')  
d.get('t1')
  
d.get('t2')
  xml:用来在python中处理xml
import xml.etree.ElementTree as ET  
tree = ET.parse('xmltest.xml')#要处理的文件名
  
root = tree.getroot()
  
print(root.tag)#打印根标签名
  
#遍历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_by","sean")
  
  tree.write('xmltest.xml')
  
#删除node
  
for country in root.findall('country'):
  
    rank = int(country.find('rank').text)
  
  if rank > 50:
  
      root.remove(country)
  
  tree.write('output.xml')
  configparser:生成和修改常见配置文档
  生成:
import configparser  
config = configparser.ConfigParser()
  
config['DEFAULT'] = {'ServerAliveInterval':'45',
  
'Compression':'yes',
  
'CompressionLevel':'9'}
  
config['bitbucket.org'] = {}
  
config['bitbucket.org']['User'] = 'hg'
  
config['topsecret.server.com'] = {}
  
topsecret = config['topsecret.server.com']
  
topsecret['Host Port'] = '50022'
  
topsecret['ForwardX11'] = 'no'
  
config['DEFAULT']['ForwardX11'] = 'yes'
  
with open('example.ini','w') as configfile:
  
config.write(configfile)
  读取:
conf = configparser.ConfigParser()  
conf.read('example.ini')
  
print(conf.defaults())
  
print(conf['bitbucket.org']['user'])
  hashlib:用于加密相关的操作
  3.x系列代替了2.x系列中的md5模块和sha模块。主要提供SHA1、SHA224、SHA256、SHA284、SHA512和MD5算法
import hashlib  
m = hashlib.md5()
  
m.update(b'Hello')
  
m.update(b"It's me")
  
print(m.digest())#二进制格式hash
  
print(m.hexdigest())#十六进制格式hash
  注意:前面执行了两次update,然后才打印的结果,此时的结果是两次update的对象加在一起生成的hash
  webbrowser:
  webbrowser.open(url):打开一个网页

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-546692-1-1.html 上篇帖子: Python IP切换 下篇帖子: Python进程学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表