028文件:因为懂你,所以永恒
>>> f = open('E:\\zetianji.txt')
>>> f
<_io.TextIOWrapper name='E:\\zetianji.txt' mode='r' encoding='cp936'>
>>> #f.read()读取
>>> f.read(5)
'\n《择天记'
>>> f.tell()#返回当前文件中的位置
10
>>> lines = list(f)
>>> for each_line in lines:
print(each_line)# 效率很低
>>> for each_line in f:
print(each_line)#高效率
>>> f.write('I love you')
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
f.write('I love you')
io.UnsupportedOperation: not writable
>>> f = open('E:\\test.txt','w')
>>> f.write('我爱鱼C工作室')
7
>>> f.close()
029文件:一个任务
030文件系统:介绍一个高大上的东西
>>> import random
>>> secret = random.randint(1,10)
>>> secret
8
>>> import os
>>> os.getcwd()
'D:\\xiaojiayu'
>>> os.listdir('D:\\xiaojiayu')
['009_example1.py', '009_example2.py', '019_test1.py', '029test_1.py', '029test_2.py', 'boy_1.txt', 'boy_2.txt', 'boy_3.txt', 'fabnoncii.py', 'fabnoncii2.py', 'factorial.py', 'girl_1.txt', 'girl_2.txt', 'girl_3.txt', 'hanol.py', 'method1.py', 'method2.py', 'method3.py', 'record.txt', 'wordgame_1.py']
>>> os.system('clac')
1
>>> #打开计算机
>>> os.curdir#指代当前目录
'.'
>>> os.listdir(os.curdir)
['009_example1.py', '009_example2.py', '019_test1.py', '029test_1.py', '029test_2.py', 'boy_1.txt', 'boy_2.txt', 'boy_3.txt', 'fabnoncii.py', 'fabnoncii2.py', 'factorial.py', 'girl_1.txt', 'girl_2.txt', 'girl_3.txt', 'hanol.py', 'method1.py', 'method2.py', 'method3.py', 'record.txt', 'wordgame_1.py']
>>> os.name
'nt'
>>> os.path.basename('D:\\xiaojiayu')
'xiaojiayu'
>>> os.path.basename('D:\\xiaojiayu\\009_example2.py')#去掉路径,返回当前文件名
'009_example2.py'
>>> os.path.dirname('D:\\xiaojiayu\\009_example2.py')#去掉文件名,返回当前路径
'D:\\xiaojiayu'
>>> os.path.join('D:\\''A', 'B', 'c')#将path1、pah2组合为一个文件名
'D:\\A\\B\\c'
>>> os.path.split('D:\\xiaojiayu\\009_example2.py')#分离路径和文件名
('D:\\xiaojiayu', '009_example2.py')
>>> os.path.splitext('D:\\xiaojiayu\\009_example2.py')#分离文件名和扩展名
('D:\\xiaojiayu\\009_example2', '.py')
>>> os.path.getatime('D:\\xiaojiayu\\girl_2.txt')
1499653732.271157
>>> import time
>>> time.gmtime(os.path.getatime('D:\\xiaojiayu\\girl_2.txt'))
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=10, tm_hour=2, tm_min=28, tm_sec=52, tm_wday=0, tm_yday=191, tm_isdst=0)
>>> time.localtime(os.path.getatime('D:\\xiaojiayu\\girl_2.txt'))
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=10, tm_hour=10, tm_min=28, tm_sec=52, tm_wday=0, tm_yday=191, tm_isdst=0)
031永久存储:腌制一缸美味的泡菜
>>> import pickle
>>> my_list = [123, 3.14, '小甲鱼', ['another list']]
>>> pickle_file = open('my_list.pkl', 'wb')
>>> pickle.dump(my_list,pickle_file)
>>> pickle_file.close()
>>> pickle_file = open('my_list.pkl', 'rb')#打开
>>> my_list2 = pickle.load(pickle_file)
>>> print(my_list2)
[123, 3.14, '小甲鱼', ['another list']]
032异常处理:你不可能总是对的
>>> my_list = ['小甲鱼是帅哥']
>>> assert len(my_list)> 0
>>> my_list.pop()
'小甲鱼是帅哥'
>>> assert len(my_list)> 0 #assert断言语句失败
Traceback (most recent call last):
File "<pyshell#59>", line 1, in <module>
assert len(my_list)> 0 #assert断言语句失败
AssertionError
>>>
>>> my_list = [1,2,3]
>>> my_list[2]
3
>>> my_list[3]
Traceback (most recent call last):
File "<pyshell#62>", line 1, in <module>
my_list[3]
IndexError: list index out of range
>>> my_dict = {'one':1,'two': 2, 'three': 3}
>>> my_dict['one']
1
>>> my_dict['four']
Traceback (most recent call last):
File "<pyshell#68>", line 1, in <module>
my_dict['four']
KeyError: 'four'
>>> my_dict.get('four')
033异常处理:你不可能总是对的2
try-except语句:
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
#f = open('我为什么是一个文件.txt')当这个txt不存在时,FileNotFoundError
#print(f.read())
#f.close()
try:
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError:
print('文件出错啦!')
try:
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦!\n错误的原因是:' + str(reason))
文件出错啦!
错误的原因是:[Errno 2] No such file or directory: '我为什么是一个文件.txt'
try:
sum = 1 + '1'
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦!\n错误的原因是:' + str(reason))
except TypeError as reason:
print('类型出错啦!\n错误的原因是:' + str(reason))
#两个print error只打印最后一个!
类型出错啦!
错误的原因是:unsupported operand type(s) for +: 'int' and 'str'
try-finally语句:
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:无论如何都会被执行的代码
try:
f = open('我为什么是一个文件.txt')
print(f.write('我存在了!'))
sum = 1 + '1'
f.close()
except OSError as reason:
print('文件出错啦!\n错误的原因是:' + str(reason))
except TypeError as reason:
print('类型出错啦!\n错误的原因是:' + str(reason))
文件出错啦!
错误的原因是:[Errno 2] No such file or directory: '我为什么是一个文件.txt'
try:
f = open('我为什么是一个文件.txt','w')
print(f.write('我存在了!'))
sum = 1 + '1'
except OSError as reason:
print('文件出错啦!\n错误的原因是:' + str(reason))
except TypeError as reason:
print('类型出错啦!\n错误的原因是:' + str(reason))
finally:
f.close()
5
类型出错啦!
错误的原因是:unsupported operand type(s) for +: 'int' and 'str'
raise语句
>>> 1/0
Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
raise ZeroDivisionError
ZeroDivisionError
>>> raise ZeroDivisionError('除数为零的异常')
Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
raise ZeroDivisionError('除数为零的异常')
ZeroDivisionError: 除数为零的异常
034 丰富的else和简洁的with语句
def showMaxFactor(num):
count = num // 2
while count > 1:
if num % count == 0:
print('%d最大的约数是%d' % (num,count))
break
count -= 1
else:
print('%d是素数!' % num)
num = int(input('请输入一个数:'))
showMaxFactor(num)
请输入一个数:11
11是素数!
try:
int('abc')
except ValueError as reason:
print('出错啦:' + str(reason))
出错啦:invalid literal for int() with base 10: 'abc'
try:
print(int('123'))
except ValueError as reason:
print('出错啦:' + str(reason))
else:
print('没有任何异常!')
123
没有任何异常!
with语句
try: f = open('data.txt', 'w') for each_line in f: print(each_line) except OSError as reason: print('出错啦:' + str(reason)) finally: f.close() 出错啦:not readable try: with open('data.txt', 'w') as f: for each_line in f: print(each_line) except OSError as reason: print('出错啦:' + str(reason))
出错啦:not readable
035图形用户界面入门:EasyGui
036 类和对象:给大家介绍对象
对象=属性【静态】+方法【动态】
oo的特征:Object Oriented面向对象class Turtle:# Python中的类名约定以大写字母开头 """关于类的一个简单例子""" #属性 color = 'green' weight = 10 legs = 4 shell = True mouth = '大腿' #方法 def climb(self): print('我正在很努力的向前爬。。。') def run(self): print('我正在飞快的向前跑。。。') def bite(self): print('咬死你咬死你!') def eat(self): print('有的吃,真满足') def sleep(self): print('困了,睡了,晚安,Zzzz') >>> tt = Turtle() >>> Turtle() <__main__.Turtle object at 0x0213D0F0> >>> tt.climb() 我正在很努力的向前爬。。。 >>> tt.bite() 咬死你咬死你! >>> tt.sleep() 困了,睡了,晚安,Zzzz >>>
>>> list1 = [2, 1, 7, 5, 3] >>> list1.sort() >>> list1 [1, 2, 3, 5, 7] >>> list1.append(9) >>> list1 [1, 2, 3, 5, 7, 9] >>> #第一点封装、第二点继承 >>> class MyList(list): pass >>> list2 = MyList() >>> list2.append(5) >>> list2.append(3) >>> list2 [5, 3] >>> list2.sort() >>> list <class 'list'> >>> list2 [3, 5] >>> #第三点为多态 >>> #第三点为多态 >>> class A: def fun(self): print("我是小A") >>> class B: def fun(self): print('我是小B') >>> a = A() >>> b = B() >>> a.fun() 我是小A >>> b.fun() 我是小B
037类和对象:面向对象的编程
self是什么?相当于C++中this指针,
>>> class Ball: def setName(self, name): self.name = name def kick(self): print('我叫%s,别提我。。' % self.name) >>> a = Ball() >>> a.setName('球A') >>> b = Ball() >>> b.setName('球B') >>> c = Ball() >>> c.setName('土豆') >>> a.kick() 我叫球A,别提我。。 >>> c.kick() 我叫土豆,别提我。。
魔方方法:__init__(self)公有和私有?>>> class Ball: def __init__(self, name): self.name = name def kick(self): print('我叫%s,别提我' % self.name) >>> b = Ball('土豆') >>> b.kick() 我叫土豆,别提我
在python中定义私有变量只需在变量名或函数名前加上“_”两个下划线,这个函数就私有。_类名__变量名
>>> class Person: name = '小甲鱼' >>> p = Person() >>> p.name '小甲鱼' >>> class Person: __name = '小甲鱼' >>> p = Person() >>> p.__name Traceback (most recent call last): File "<pyshell#77>", line 1, in <module> p.__name AttributeError: 'Person' object has no attribute '__name' >>> p.name Traceback (most recent call last): File "<pyshell#78>", line 1, in <module> p.name AttributeError: 'Person' object has no attribute 'name' >>> class Person: __name = '小甲鱼' def getName(self): return self.__name >>> p = Person() >>> p.__name Traceback (most recent call last): File "<pyshell#85>", line 1, in <module> p.__name AttributeError: 'Person' object has no attribute '__name' >>> p.getName() '小甲鱼'