Python文件及文件夹处理
# 50.python执行shell脚本返回结果
# import subprocess
# result=subprocess.getoutput('dir')
# print(result)
# #######################################################################################################################
# 51.输出某个路径下所有文件和文件夹的路径
# import os
# def print_dir():
# filepath=input('请输入路径:')
# if filepath=='':
# print('请输入正确的路径')
# else:
# for i in os.listdir(filepath):
# print(os.path.join(filepath,i))
# print(print_dir())
# #######################################################################################################################
# 52.输出某个路径下及其目录下的所有文件路径
# import os
# def show_dir(filepath):
# for i in os.listdir(filepath):
# path=(os.path.join(filepath,i))
# print(path)
# if os.path.isdir(path): # 判断是否是目录
# show_dir(path) # 如果是目录,采用递归的方式
# filepath='C:\Program Files'
# show_dir(filepath)
# #######################################################################################################################
# 53.列出当前目录下所有目录及文件夹名
# import os
# for d in os.listdir('.'):
# print(d)
# #######################################################################################################################
# 54.输出某个路径及其子目录下所有以html为后缀的文件
# import os
# def print_dir(filepath):
# for i in os.listdir(filepath):
# path=os.path.join(filepath,i) # path为路径
# if os.path.isdir(path): # 判断是否是文件夹,如果是文件夹则递归,如果不是文件夹则执行下一行
# print_dir(path)
# if path.endswith('.html'): # 判断文件是否是html
# print(path)
#
# filepath='C:/Users/Administrator/PycharmProjects/python进阶'
# print_dir(filepath)
# #######################################################################################################################
# 55.生成100个数,然后写入文件
# import random
# fp=open('aa.txt','w')
# for i in range(1,101):
# n=random.randint(1,1000)
# fp.write(str(i)+'->'+str(n)+'\n')
# fp.close()
# #######################################################################################################################
# 56.逐行读入utf-8编码的文件打印在屏幕上
# # coding=utf-8
# import chardet # 查看字符串编码方式的模块
# fp=open('abc.txt','r')
# lines=fp.readlines()
# fp.close()
#
# for line in lines:
# print(line.decode('utf-8').encode('gbk','ignore'))
# #######################################################################################################################
# 57.删除文件
# import os
# file=r'C:\Users\Administrator\PycharmProjects\python进阶\ab.txt'
# if os.path.exists(file):
# os.remove(file)
# print('delete sucess')
# else:
# print('no such file:%s' % file)
# #######################################################################################################################
# 58.获取当前目录
# import os
# os.getcwd() # 获取当前目录
# #######################################################################################################################
# 59.修改当前目录,
# import os
# os.chdir('C:\Users\Administrator\PycharmProjects\python进阶') # 更改目录
# #######################################################################################################################
# 60.以相反顺序展示一个文件的内容
# for line in reversed(list(open('c.txt'))):
# print(line.rstrip)
# #######################################################################################################################
# 61.设置一个函数,返回给定文件的后缀名
# def get_suffix(filename,has_dot=False):
# pos=filename.rfind('.') # 返回数值pos
# if 0<pos<len(filename)-1:
# index=pos if has_dot else pos+1 # 返回pos+1
# return filename[index:]
# else:
# return ''
# print(get_suffix('vbgedfvbda.txt'))
# 精简版
# def get_suffix(filename,has_dot=False):
# pos = filename.rfind('.') # 返回数值pos
# index = pos+1 # 返回pos+1
# return filename[index:]
# print(get_suffix('vbgedfvbda.txt'))
# #######################################################################################################################
# 62.返回给定文件的后缀名os.path.splitext(file) 返回元组 <class 'tuple'>
# import os
# print(os.path.splitext('a.yxy'),type(os.path.splitext('a.yxy')))
#
# print(os.path.splitext('a.yxy')[1])
# #######################################################################################################################
# 63.返回给定文件的后缀名
# a = 'vbgedfvbda.txt'
# pos=a.rfind('.')
# print(a[pos:])
# #######################################################################################################################
# 64.生成随机数
# import random
# print(random.random()) # 0~1之间浮点型随机数
# print(random.randint(2,4)) # 2~4之间整形随机数
# print(random.randrange(2,8,2)) # step=2的随机数
# print(random.uniform(10,20)) # 10~20浮点型随机数
# print(random.choice('dnnjksjkji')) # 随即提取一个字符
# #######################################################################################################################
# 65.从指定序列中随机获取指定长度的片段
# import random
# list1=[1,2,4,'edd',56,'da']
# print(random.sample(list1,3)) # 指定序列中随机获取指定长度的片段
# print(random.sample(list1,3)) # 指定序列中随机获取指定长度的片段
# print(random.sample(list1,3)) # 指定序列中随机获取指定长度的片段
# print(random.sample(list1,3)) # 指定序列中随机获取指定长度的片段
# #######################################################################################################################
# 66.打乱一个排好序的list对象
# import random #
# list2=[23,5,55,756,211,131] # 列表
# random.shuffle(list2) # 打乱列表
# print(list2) # 打乱列表
# random.shuffle(list2) # 打乱列表
# print(list2)
# random.shuffle(list2)
# print(list2)
# random.shuffle(list2)
# print(list2)
# #######################################################################################################################
# 67.生成验证码的两种方式
# import random
# list3=[]
#
# for i in range(65, 91): # A-Z
# list3.append(chr(i))
# for j in range(97, 123): # a-z
# list3.append(chr(j))
# for k in range(48, 58): # 0-9
# list3.append(chr(k))
#
# ma = random.sample(list3, 6) # 指定序列中随机获取指定长度的片段
# print(ma)
# ma = ''.join(ma)
# print(ma)
# #######################################################################################################################
# 装饰器 @
# 68.以函数为参数返回一个替换函数的可执行函数
# #######################################################################################################################
# 构造器 def __init__(self,,,,):
# #######################################################################################################################
# 69.类传入外部参数全靠构造函数
# class fib:
# def __init__(self):
# self.xxt=29
#
# f=fib()
# print(f.xxt)
# 类
# ######################################################################
# class fib: #
# def __init__(self,name): #
# self.age=29 #
# self.sex='femal' #
# self.value=name #
# #
# f=fib('xxt') #
# print('name',f.value,'\n','age',f.age,'\n','sex',f.sex) #
# print('name',f.value,'\t','age',f.age,'\t','sex',f.sex) #
# ######################################################################
# #######################################################################################################################
# 生成器 Generator
# 70.简单生成器
# L=[x*x for x in range(3)] # 列表
# g=(x*x for x in range(3)) # 迭代器
#
# print(L) # 列表可直接打印
# print(g) # 迭代器不能直接打印
# for i in g: # 循环打印
# print(i) # 循环打印
# #######################################################################################################################
# 70.带有yield语句的生成器 return返回值时不保留当前信息,yield返回值时会保留当前信息
# import sys # 跟编译器相关
# def fibobacci(n):
# a, b, counter = 0, 1, 0
# while True:
# if ( counter > n ):
# return
# yield a # 带有yield语句的生成器 return返回值时不保留当前信息,yield返回值时会保留当前信息
# a, b = b, a+b # 先计算右边再复制给左边
# counter += 1
#
# f=fibobacci(10)
#
# while True:
# try:
# print(next(f), end='\t')
# except StopIteration:
# sys.exit()
# #######################################################################################################################
# 迭代器 有两个基本语法 iter()和next()可以使用collections模块判断一个对象是否是迭代器
# 71. 简单的迭代器
# list=[1,2,3,4]
# it=iter(list)
# for x in it:
# print(x)
# #######################################################################################################################
# 71. 判断迭代器 isinstance
# from collections import Iterable
#
# print(isinstance('asdfc',Iterable)) # True
# print(isinstance([1,23,444],Iterable)) # True
# print(isinstance(2332,Iterable)) # False
# print(isinstance((1,2,45,6),Iterable)) # True
# print(isinstance({1,23,53,12},Iterable)) # True
# #######################################################################################################################
# 71. 类的迭代使用,需要__iter__和__next__
# class MyNumbers:
# def __iter__(self):
# self.a=1
# return self
#
# def __next__(self):
# x=self.a # self.a=1
# self.a+=1 # self.a+=1
# return x # 返回的x在print中打印
#
# myclass = MyNumbers()
# myiter = iter(myclass)
#
# print(next(myiter))
# print(next(myiter))
# print(next(myiter))
# print(next(myiter))
# print(next(myiter))
# #######################################################################################################################
# 72.isinstance和type检测某一变量是否是某一类型,某一实例是否属于某一类
# a=10
# print(type(a)==int) # type(a)==int
# print(isinstance(a,int)) # isinstance(a,int)
# print(isinstance(a,str)) #
# print(isinstance(a,(str,int,list))) # isinstance(a,(str,int,list))
# #######################################################################################################################
# # 73.浅拷贝、深拷贝、赋值
# import copy
# a=[1,2,3,4,['a','b']]
# b=a # a,b完全是一个东西
#
# c=copy.copy(a) # 浅拷贝
# # 增加列表元素 不能浅拷贝
# # 列表的某个元素更改 可以浅拷贝
#
# d=copy.deepcopy(a) # 单独拷贝a一份,拷贝结束,不在有关联,为初始a=[1,2,3,4,['a','b']]
#
# a.append(5) # 增加列表元素 不能浅拷贝
# a[4].append('c') # 列表的某个元素更改 可以浅拷贝
# a[0]=66
#
# print('a=',a)
# print('b=',b)
# print('c=',c)
# print('d=',d)
# #######################################################################################################################
# #################################################################
# # # 74.map函数,根据提供函数对指定序列进行映射,相当于一次性求解多个值 ##
# def square(x): ##
# return x**2 ##
# ##
# print(list(map(square,[1,2,3,4,5]))) # square后无括号 ##
# print(list(map(lambda x:x**2,[1,2,3,4,5]))) ##
# ##
# print(list(map(lambda x,y:x+y,[1,2,3,4,5],[3,5,76,2]))) ##
# #################################################################
# #######################################################################################################################
#75.reduce函数,对参数序列中的元素进行积累 reduce(函数,[迭代序列])
#
# from functools import reduce
# def add(x,y):
# return x+y
#
# r=reduce(add,[1,2,34,4])
# print(r)
# #######################################################################################################################
# 76.filter函数,过滤函数 返回序列
#
from collections import *
# def isOdd(n):
# return n%2==1 # 余数为1
# def isOdd(n):
# if n%2==1:
# return n
#
# f=filter(isOdd,[1,2,3,45,6,7,8,432,1])
# print(list(f))
# #######################################################################################################################
# 77.enumerate函数,返回枚举对象函数,可迭代
#
# seasons=['dwe','qdw','dqq']
# print(list(enumerate(seasons)))
# #######################################################################################################################
# 78.zip函数,拉链函数 返回列表
#
# list1=[1,3,46,5]
# list2=['ss','ds','fr','qw']
# list3=[32,322,433,2322]
#
# ziped=zip(list1,list2,list3)
# print(list(ziped)) # [(1, 'ss', 32), (3, 'ds', 322), (46, 'fr', 433), (5, 'qw', 2322)]
# #######################################################################################################################
# 79.hasattr()判断一个对象是否有name属性和方法、
#*******************************************************************
# class function_demo(object): #*
# name='demo' # 属性(自身属性值) #*
# def run(self): # 方法(无参数) #*
# return "hello function" #*
# def run1(self,dog): # 函数(有参数) #*
# return "hello function "+dog #*
# #*
# functiondemo=function_demo() #*
# print(hasattr(functiondemo,'name')) #*
# print(hasattr(functiondemo, 'run')) #*
# print(hasattr(functiondemo, 'age')) #*
# print(functiondemo.run1('pig')) #*
# #*****************************************************************
# #######################################################################################################################
#getattr()获取对象属性和方法
# class function_demo(object):
# name='demo'
# def run(self):
# return "hello function"
#
# functiondemo=function_demo()
# print(getattr(functiondemo,'name')) # 返回姓名
# print(getattr(functiondemo, 'run')) # 返回地址
# #######################################################################################################################
#setattr()给对象属性进行赋值
# class function_demo(object):
# name='demo'
# def run(self):
# return "hello function"
#
# functiondemo=function_demo()
# print(hasattr(functiondemo,'name')) # 判断属性是否存在
# setattr(functiondemo,'age',18) # 属性赋值,相当于age=18
# print(hasattr(functiondemo, 'age')) # 判断属性是否存在
# #######################################################################################################################
# #######################################################################################################################
# 80.正则表达式//也称为规则表达式
# #######################################################################################################################
# 81.match函数
# match('匹配则正则表达式','要匹配的字符串',控制表达式匹配模式)
# import re
# m = re.match('www', 'Www.mobiletrain.org', re.I)
# if m != None:
# print(m.group()) # group和groups返回匹配结果, Www
# print(m.span()) # 匹配结果标志位 (0, 3)
# #######################################################################################################################
# 82.search函数
# import re
# print(re.search('www','www.taop.com')) # <_sre.SRE_Match object; span=(0, 3), match='www'>
# print(re.search('www','.wwwtam,mm.com')) # <_sre.SRE_Match object; span=(1, 4), match='www'>
# #######################################################################################################################
# 83.findall函数
# import re
# pattern=re.compile(r'\d+') # 查找数字
# result1=pattern.findall('' 'cwcww4422 fwwcfw2rrrc fc 34') # 查找数字
# result2=pattern.findall('cafev424rvevevd355cfcctfd5',0,10) # 查找数字
# print(result1)
# print(result2)
# #######################################################################################################################
# 84.finditer函数
# import re
# it=re.finditer(r'\d+','13ecwe5345fe52rwf4535vvwvc dcx32')
# for match in it:
# print(match.group())
# #######################################################################################################################
# 85.compile函数
#
import re
pattern=re.compile(r'\d+')
m=pattern.match('one12dcvkio230uiu9fkjfksm kfkl opi9i0')
print(m)
m=pattern.match('one12dcvkio230uiu9fkjfksm kfkl opi9i0',2,20)
print(m)
m=pattern.match('one12dcvkio230uiu9fkjfksm kfkl opi9i0',3,20)
print(m)
#print(m.groups())
print(m.group(0))
print(m.start(0))
print(m.end(0))
print(m.span(0))
# #######################################################################################################################
# 86.sub函数 re.sub(正则表达式模式,替换字符串,要被查找替换的原字符串,模式匹配后要替换的最大次数)
#
# import re
# phone='199-4629-0552' # gaagcec
#
# num1=re.sub(r'#.*$','',phone)
# print('电话号码:',num1)
#
# num2=re.sub('#.*$','',phone)
# print('电话号码:',num2)
#
# num3=re.sub(r'#','',phone)
# print('电话号码:',num3)
#
# num4=re.sub(r'\D+','',phone)
# print('电话号码:',num4)
#
# num5=re.sub(r'\D','',phone)
# print('电话号码:',num5)
#
# import re
#
# def double(matched):
# value=int(matched.group('value'))
# return str(value*2)
#
# s='a321mk3455kk523km'
# print(re.sub('(?P<value>\d+)',double,s))
# #######################################################################################################################
# 87.split函数
#
# import re
# print(re.split('\W+','lhrxxt,lhrxxt,lhrxxt.'))
# print(re.split('(\W+)','lhrxxt,lhrxxt,lhrxxt.'))
# print(re.split('\W+','lhrxxt,lhrxxt,lhrxxt.',1))
# print(re.split('a*','hello world!'))