'''使用装饰器对文件进行读写操作'''
# 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')

python使用装饰器对文件进行读写操作'及遍历文件目录的更多相关文章

  1. Python之装饰器、迭代器和生成器

    在学习python的时候,三大“名器”对没有其他语言编程经验的人来说,应该算是一个小难点,本次博客就博主自己对装饰器.迭代器和生成器理解进行解释. 为什么要使用装饰器 什么是装饰器?“装饰”从字面意思 ...

  2. python之“装饰器”

    在python里装饰器 其定义:装饰器就是一个函数,用来装饰其他函数,就是给其他函数添加功能. 装饰器有两个特点: 1.装饰器不修改被装饰函数的源码: 2.装饰器不锈钢被装饰函数的调用方式. 在编程中 ...

  3. Python各式装饰器

    Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...

  4. Python札记 -- 装饰器补充

    本随笔是对Python札记 -- 装饰器的一些补充. 使用装饰器的时候,被装饰函数的一些属性会丢失,比如如下代码: #!/usr/bin/env python def deco(func): def ...

  5. python基础——装饰器

    python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25 ...

  6. 【转】详解Python的装饰器

    原文链接:http://python.jobbole.com/86717/ Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现 ...

  7. 两个实用的Python的装饰器

    两个实用的Python的装饰器 超时函数 这个函数的作用在于可以给任意可能会hang住的函数添加超时功能,这个功能在编写外部API调用 .网络爬虫.数据库查询的时候特别有用 timeout装饰器的代码 ...

  8. python 基础——装饰器

    python 的装饰器,其实用到了以下几个语言特点: 1. 一切皆对象 2. 函数可以嵌套定义 3. 闭包,可以延长变量作用域 4. *args 和 **kwargs 可变参数 第1点,一切皆对象,包 ...

  9. 理解Python中的装饰器//这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档 ...

随机推荐

  1. 《深入理解Java虚拟机》-----第4章 虚拟机性能监控与故障处理工具

    理论总是作为指导实践的工具,能把这些知识应用到实际工作中才是 我们的最终目的. 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异 ...

  2. Cayley图数据库的可视化(Visualize)

    引入   在文章Cayley图数据库的简介及使用中,我们已经了解了Cayley图数据库的安装.数据导入以及进行查询等.   Cayley图数据库是Google开发的开源图数据库,虽然功能还没有Neo4 ...

  3. java中求质数(素数)的问题

    这篇笔记讲讲关于java中质数的问题. 一.什么是质数(素数)? 定义:质数又称素数.一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数:否则称为合数.它可以有无限个数. 二.ja ...

  4. C++系列总结——多态

    前言 封装隐藏了类内部细节,通过继承加虚函数的方式,我们还可以做到隐藏类之间的差异,这就是多态(运行时多态).多态意味一个接口有多种行为,今天就来说说C++的多态是怎么实现的. 编译时多态感觉没什么好 ...

  5. centos 7下安装jdk1.8

    本篇文章主要介绍在centos7 环境下安装jdk1.8并配置环境变量. 安装步骤 1.下载网址   https://www.oracle.com/technetwork/java/javase/do ...

  6. Yii2设计模式——设计模式简介

    我们首先来思考一个问题:作为工程师,我们的价值是什么? 笔者认为是--解决用户问题. 我们的任何知识和技能,如果不能解决特定的问题,那么就是无用的屠龙之术:我们的任何经验,如果不能对解决新的问题有用, ...

  7. 鼠标事件以及clientX、offsetX、screenX、pageX、x的区别

    鼠标事件 鼠标事件有下面这几种: 1. onclick 鼠标点击事件 box.onclick = function(e){ console.log(e) } 2. onmousedown 鼠标按下事件 ...

  8. js中事件冒泡,事件捕获详解

    一.事件流 事件是js与HTML交互的基础,事件流描述的是页面接受事件的顺序,而事件流又分为三个阶段:捕获阶段.目标阶段和冒泡阶段. 如果单纯的事件处理,事件捕获和事件冒泡二选一即可,导致两者并存的原 ...

  9. C# winform 拖拽效果

    //是否在拖拽 bool isDrag = false; //鼠标相对于button控件左上角的坐标 Point contextbtnPoint = Point.Empty; private void ...

  10. java 线程池 ---- newFixedThreadPool()

    class MyThread implements Runnable{ private int index; public MyThread(int index){ this.index = inde ...