python使用装饰器对文件进行读写操作'及遍历文件目录

'''使用装饰器对文件进行读写操作'''
# def check_permission(func):
#     '''演示嵌套函数定义及使用'''
#     def wrapper(*args,**kwargs):
#         '''*args:接收任意多个实参并存入元组中;**kwargs:接收关键字参数显示赋值并存入字典中'''
#         if kwargs.get('username') != 'admin':
#             raise Exception('Sorry,You are not allowed')
#         return func(*args,**kwargs)
#     return wrapper
#
# class ReadWriteFile(object):
#     # 装饰器
#     @check_permission #read = check_permission(read)
#     def read(self,username,filename):
#         return open(filename,'r').read()
#
#     def write(self,username,filename,content):
#         with open(filename,'a+') as op:#采用with上下文管理语句
#             op.write(content)
#         #open(filename,'a+').write(content)
#     # 普通函数使用
#     writes = check_permission(write)
#
# t = ReadWriteFile()
# print(t.read(username='admin',filename=r'c:\Users\PGIDYSQ\Desktop\1111111e.gen'))
# print("*"*60)
# t.write('admin',filename=r'c:\Users\PGIDYSQ\Desktop\1111111e.gen',content='增加内容...')
# print("-"*60)

# with open(r'c:\Users\PGIDYSQ\Desktop\1111111e.gen') as fp:
#     #print(list(map(len,fp.readlines())))
#     print(list(enumerate(fp.readlines())))
#         # for line in fp:
#         # print(line)
#pickle使用
import pickle
srcurl =r'c:\Users\PGIDYSQ\Desktop\1111111e.gen'
dsturl =r'c:\Users\PGIDYSQ\Desktop\tset.bat'
with open(srcurl,encoding='utf-8') as src,open(dsturl,'wb') as dest:
    lines = src.readlines()
    pickle.dump(len(lines),dest)#行数
    for line in lines:
        pickle.dump(line,dest)
with open(r'c:\Users\PGIDYSQ\Desktop\tset.bat','rb') as fp:
    n = pickle.load(fp)#转换行数号
    for i in range(n):
        #print(pickle.load(fp))
        bb = pickle.load(fp)
        print(bb)
#struct使用
#struct.pack,unpack==》write(struct),read(9)
'''遍历指定目录下的所有子目录及文件'''
import os
def visitDir(path):
    if not os.path.isdir(path):
        print('Error')
        return
    for lists in os.listdir(path):
        sub_path = os.path.join(path,lists)
        print(sub_path)
        if os.path.isdir(sub_path):
            visitDir(sub_path)#递归调用
#visitDir(r'F:\UpSVNProject')
#采用os.walk()方法进行遍历
def visitDir2(path):
    if not os.path.isdir(path):
        print('Error')
        return
    list_dirs = os.walk(path)
    for root,dirs,files in list_dirs:
        for d in dirs:
            print(os.path.join(root,d))
        for f in files:
            print(os.path.join(root,f))
#visitDir2(r'F:\UpSVNProject')

 

posted @ 2018-06-08 20:00  goodTOgreat  阅读(519)  评论(0编辑  收藏  举报