Python字符串和文件操作常用函数分析


Posted in Python onApril 08, 2015

本文实例分析了Python字符串和文件操作常用函数。分享给大家供大家参考。具体如下:

# -*- coding: UTF-8 -*-
'''
Created on 2010-12-27
@author: sumory
'''
import itertools
def a_containsAnyOf_b(seq,aset):
  '''判断seq中是否含有aset里的一个或者多个项
    seq可以是字符串或者列表
    aset应该是字符串或者列表'''
  for item in itertools.ifilter(aset.__contains__,seq):
    return True
  return False
def a_allIn_b(seq,aset):
  '''判断seq中的所有项是否都在aset里
    seq可以是字符串或者列表
    aset应该是字符串或者列表'''
  for item in seq:
    if item not in aset:
      return False
  return True
def a_containsAll_b(seq,aset):
  '''判断seq是否包含aset里的所有项
    seq可以是字符串或者列表
    aset应该是字符串或者列表
         任何一个set对象a,a.difference(b)等价于a-set(b),即返回a中所有不属于b的元素'''
  return not set(aset).difference(seq)
 
import string
#生成所有字符的可复用的字符串
sumory_allchars=string.maketrans('','')
def makefilter(keep):
  '''返回一个函数,此函数接受一个源字符串作为参数\
    并返回字符串的一个部分拷贝\
    此拷贝只包括keep中的字符,keep必须是一个普通的字符串\
    调用示例:makefilter('abca ')('abcdefgh ijkal cba')\
    在后面的字符串中保留前面出现的字符 abc a cba
  '''
  #按照sumory_allchars规则剔除sumory_allchars字符串中的keep里的字符
  #这里得到keep在sumory_allchars的补集
  deletechars=sumory_allchars.translate(sumory_allchars,keep)
  #生成并返回需要的过滤函数(作为闭包)
  def realdelete(sourseStr):
    return sourseStr.translate(sumory_allchars,deletechars)
  return realdelete
def list_removesame(list):
  '''删除list中的重复项'''
  templist=[]
  for c in list:
    if c not in templist:
      templist.append(c)
  return templist
def re_indent(str,numberofspace):
  '''
  缩进\
  将字符串str中按换行符划分并在每句前加上numberofspace个space\
  再组合成字符串'''
  spaces=numberofspace*' '
  lines=[spaces+line.strip() for line in str.splitlines()]
  return '\n'.join(lines)
def replace_strby_dict(sourseStr,dict,marker='"',safe=False):
  '''使用字典替换源字符串中的被marker包裹的相应值'''
  #如果safe为True,那么字典中没找到key时不替换
  if safe:
    def lookup(w):
      return dict.get(w,w.join(marker*2))
   #w.join(marker*2)用marker包裹w
  #如果safe为False,那么字典中没找到key时抛异常\
  #若将dict[w]换为dict.get(w)则没找到时返回None
  else:
    def lookup(w):
      return dict[w]
  #根据marker切分源字符串
  splitparts=sourseStr.split(marker)
  #取出切分后的奇数项
  #因为切分后,列表中源字符串中marker包裹的项肯定位于基数部位
  #就算是'"first"s is one'这样的字符串也是如此
  #分割后的第0项为空串,第1项为first
  splitparts[1::2]=map(lookup,splitparts[1::2])
  return ''.join(splitparts)
def simply_replace_strby_dict(sourseStr,dict,safe=True):
  '''根据dict内容替换sourseStr原串中$标记的子字符串\
  dict= {'name':'sumory','else':'default'}
  $$5 -> $5
  $else -> default
  ${name}'s method -> sumory's method
  '''
  style=string.Template(sourseStr)
  #如果safe,在dict中找不到的话不会替换,照样保留原串
  if safe:
    return style.safe_substitute(dict)
  #false,找不到会抛异常
  else:
    return style.substitute(dict)
##################################################
def scanner(object,linehandler):
  '''用linehandler方法遍历object的每一项'''
  for line in object:
    linehandler(line)
def printfilelines(path):
  '''读取path路径下的文件屏逐行打印'''
  fileobject=open(path,'r')#open不用放到try里
  try:
    for line in fileobject:
      print(line.rstrip('\n'))
  finally:
    fileobject.close()
def writelisttofile(path,ilist):
  fileobject=open(path,'w')
  try:
    fileobject.writelines(ilist)
  finally:
    fileobject.close()
import zipfile
def listzipfilesinfo(path):
  z=zipfile.ZipFile(path,'r')
  try:
    for filename in z.namelist():
      bytes=z.read(filename)
      print('File:%s Size:%s'%(unicode(filename, 'cp936').decode('utf-8'),len(bytes)))
  finally:
    z.close()
 
import os,fnmatch
def list_all_files(root,patterns='*',single_level=False,yield_folders=False):
  '''列出目录(或者及其子目录下的文件)'''
  #分割模式到列表
  patterns=patterns.split(';')
  for path,subdirs,files in os.walk(root):
    if yield_folders:
      files.extend(subdirs)
    files.sort()
    for name in files:
      for pat in patterns:
        if fnmatch.fnmatch(name, pat):
          yield '/'.join(unicode(os.path.join(path,name),'cp936').split('\\'))
          break
    if single_level:
      break
def swapextensions(root,before,after):
  if before[:1]!='.':
    before='.'+before
  extensionlen=-len(before)
  if after[:1]!='.':
    after='.'+after
  for path,subdirs,files in os.walk(root):
    for oldfile in files:
      if oldfile[extensionlen:]==before:
        oldfile=os.path.join(path,oldfile)
        newfile=oldfile[:extensionlen]+after
        os.rename(oldfile, newfile)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python函数的周期性执行实现方法
Aug 13 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
实例讲解Python爬取网页数据
Jul 08 Python
Django model反向关联名称的方法
Dec 15 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
python dumps和loads区别详解
Feb 04 Python
python 调整图片亮度的示例
Dec 03 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 #Python
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 #Python
python复制与引用用法分析
Apr 08 #Python
Python导入txt数据到mysql的方法
Apr 08 #Python
python集合类型用法分析
Apr 08 #Python
在Python中使用Mako模版库的简单教程
Apr 08 #Python
python中requests模块的使用方法
Apr 08 #Python
You might like
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Django DRF路由与扩展功能的实现
2020/06/03 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
人事部经理岗位职责
2014/03/07 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
《绝招》教学反思
2016/02/20 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python