17-文件

lesson17文件
#视频1 作业讲解:


-------------------------------------------------------------
#视频2 装饰器

 1 class MyClass(object):
 2     attr = 'ren'
 3     @property        #让方法像属性一样被访问
 4     def func1(self):
 5         print('-----------这是func1-------')
 6 
 7     @classmethod   # cls类方法调用 标识类方法的
 8     def func2(cls):
 9         print('-----------这是func2-------')
10 
11     @staticmethod   #类的静态方法
12     def func3():
13         print('-----------这是func3-------')
14 
15     def func4(self):
16         print('-----------这是func4-------')
17 # 类方法可以通过实例和类去访问  实例方法只能用实例去访问
18 yan = MyClass()
19 print(yan.attr)
20 yan.func1    #原本是yan.func1()
21 MyClass.func2() # 原本是yan.func2()
22 yan.func3()
23 MyClass.func3()
24 MyClass.func4()   #错误调用

#运行:
ren
-----------这是func1-------
-----------这是func2-------
-----------这是func3-------
-----------这是func3-------

备注:classmethod和staticmethod只能通过类方法调用

--------------------------------------------
#装饰器

 1 #装饰器
 2 def my_func(fun):
 3     def fun1(a,b):
 4         print('装饰的功能')
 5         print('a+b结果是:%s' % (a + b))
 6         print('a-b结果是:%s' % (a - b))
 7         fun(a,b)
 8         print('装饰的功能2')
 9     return fun1
10 
11 @my_func
12 def func(a,b):
13     print('a*b结果是:%s'%(a*b))
14 
15 func(11,2)

#运行:
装饰的功能
a+b结果是:13
a-b结果是:9
a*b结果是:22
装饰的功能2

----------------------------------------
#类装饰器

 1 #类装饰器
 2 class Text(object):
 3     def __init__(self,fun):
 4         self.fun = fun
 5 
 6     def __call__(self, *args, **kwargs):
 7         print('装饰器的功能代码')
 8         self.fun()
 9 
10 @Text   # func = Text(func)
11 def func():
12     print('原来的功能代码')
13 
14 
15 func()

#运行:
装饰器的功能代码
原来的功能代码

-------------------------------------------------------------
#视频3 文件

 1 f =open('ggg.txt','w+')     #打开文件
 2 
 3 f.write('''hello python
 4 123123123123123
 5 45454544
 6 asdfsadfsadf
 7 ''')    #写入内容到文件
 8 
 9 f.flush()    #保存
10 print(f.tell())        #查看文件指针当前在哪个位置
11 f.seek(2)               #指针移动到2的位置
12 print(f.tell())
13 print(f.read())      #读取文件内容    python
14 f.seek(0)
15 print(f.readline())      #每次只能读取一行
16 
17 f.seek(0)
18 print(f.readlines())    #读取内容到  列表中
19 print(f.tell())
20 
21 f.close()   #关闭文件

#运行:
51
2
llo python
123123123123123
45454544
asdfsadfsadf

hello python

['hello python\n', '123123123123123\n', '45454544\n', 'asdfsadfsadf\n']
51

-------------------------------------------------------------
#视频4 上下文管理器with
#例子2--- 文件操作 with 自动保存文件

1 #例子2--- 文件操作 with  自动保存文件
2 with open('ggg.txt','w+') as f:     #相当于f =open('ggg.txt','w+')
3     f.write('hello python')
4     print(f.tell())
5     f.seek(0)
6     print(f.read(1024))
7     print(f.tell())

#运行:
12
hello python
12

#例子3---上下文管理   调用顺序:enter---for----exit

 1 #例子3----上下文管理   调用顺序:enter---for----exit
 2 class MyClass(object):
 3     def __enter__(self):
 4         print('开始运行调用')
 5         return '开始了'
 6     def __exit__(self, exc_type, exc_val, exc_tb):
 7         print('结束调用')
 8 
 9 with MyClass() as a:
10     print(a)   #开始了
11     for i in range(1,5):
12         print(i)

#运行:
开始运行调用
开始了
1
2
3
4
结束调用

-------------------------------------------------------------
#视频5 io流

 1 #例子---io流
 2 import io
 3 
 4 sio = io.StringIO()   #创建一个string io流
 5 sio.write('nihao python')    #写入   缓存中
 6 
 7 # sio.seek(0)
 8 # print(sio.read())
 9 print(sio.getvalue())    #读取io流中内容
10 
11 sio.close()    #关闭流


#运行:
nihao python

-------------------------------------------------------------
#视频6 os模块

 1 #例子  os模块   提供python与操作系统交互的接口
 2 import os
 3 
 4 os.system('ls')     #直接调用系统命令
 5 os.system('pwd')
 6 os.mkdir('/home/pyvip/20180606py_case/基础/999')     #指定路径创建文件夹999,第二次运行要先把999删掉,不然会报错
 7 os.rename('999','PPP')   #将文件夹999  改名为PPP
 8 os.path.join(r'/home/pyvip/20180606py_case',r'基础')    #路径拼接
 9 
10 import shutil
11 shutil.copytree('PPP','lll')   #拷贝文件夹
12 shutil.move('222.py','lll')   #移动文件到文件夹

#运行:
10控制流程.py 14面向对象2.py 16装饰器5.py 18异常1.py 22复习.py
11函数.py 14面向对象3.py 17IO流6.py 18推导式3.py class.txt
11函数作业.py 15继承1.py 17os模块.py 18自定义异常2.py ggg.txt
12作用域2.py 15继承2多继承.py 17上下文管理器5.py 19生成器1.py lianxi.py
12匿名函数1.py 15继承3魔术方法.py 17内置装饰器1.py 19迭代器2.py lll
12递归函数4.py 16new1.py 17文件4.py 20元字符2.py PPP
12闭包3.py 16单例2.py 17类装饰器.py 20元字符3.py yanzhi
13解答课.py 16定制属性3.py 17装饰器2.py 20正则1.py zuoye.txt
14面向对象1.py 16描述符4.py 18作业4.py 21复习.py
/home/pyvip/20180606py_case/基础


------------------------------------
#解答课
#作业:
1,把课堂上内置装饰器的列子敲一遍

2,要求:

 1 #作业
 2 # 2,要求:
 3 #     1.打开一个文件,
 4 #     2.在里面写入 hello100遍
 5 #     3.然后调整文件指针位置到文件开头,
 6 #     4.读取文件内容
 7 #     5.最后关闭文件
 8 f = open('zuoye.txt','w+')
 9 for i in range(1,11):
10     ff= '第%s遍hello\r\n'%i
11     #print(ff)
12     f.write(ff)
13 f.seek(0)
14 print(f.read())
15 f.close()

#运行:
第1遍hello
第2遍hello
第3遍hello
第4遍hello
第5遍hello
第6遍hello
第7遍hello
第8遍hello
第9遍hello
第10遍hello


--------------------------------------------

#复习1
1,类
2,继承 :__attr私有属性不能被继承
3,多继承 class D(A,B,C) 类中fun方法调用顺序:自身---A-----B------C
#复习2
1,__new__方法
2,单例模式,只有一个对象,在创建会覆盖原来对象,地址相同 #18分钟练习,只能创建5个单例对象
3,装饰器
4,类装饰器

猜你喜欢

转载自www.cnblogs.com/tiantiancode/p/12899776.html
今日推荐