第二块 基础操作Day1 文件/模块/异常/生成器(121-141)

文件操作

  • 文件上传 及 下载
    在这里插入图片描述
open(file,mode,buffering,endcoding)系统函数
rtl默认
w写文件
aappend追加的意思,不会覆盖
  • 读 open(path,‘rt’),
    在这里插入图片描述
    在这里插入图片描述
stream = open(r'c:\df.txt')
# 循环line
while 1:
	line = stream.readline()
	print(line)
	if not line:
		break
lines = stream.readlines() #行1\n,行2\n
for i in lines:
	print(i)
  • 写文件 覆盖
    stream=open(r’c:’,‘w’)
stream=open(r'c:\','w')
s = '你真的是厉害'
result = stream.write(s)
print(result)
#stream.close()
stream.writelines(['a\n','b\n','c\n'])
  • 文件的复制
    原C:
    新D:
    在这里插入图片描述
    with结合open使用,可以帮助我们自动 释放资源
    针对图片操作: wb,rb
with open(r'c:\','rb') as stream:
	container=stream.read()
	with open(r'D:\','wb' as wstream:
		wstream.write(container)
print('复制完成')
  • OS模块 operating system
    xxx.py>>>>如os.py
with open(r'c:\','rb') as stream:
	container=stream.read()
path = os.path.dirname(__file__) #获取当前文件所在的目录(绝对路径)
path1 = os.path.join(path,'aa.txt')
with open(path1,'wb') as wstream:
	wstream.write(container)
  • 文件名截取
    在这里插入图片描述
    更简洁的文件名获取方法
    在这里插入图片描述

OS模块

absolution 绝对文件路径r’c:\df\s\aa.txt’
相对路径'…/s/aa.txt’上一级
相对路径'…/…/s/aa.txt’上二级
相对路径's/aa.txt同一级中
os.path.dirname(file) directory目录获取当前文件的路径
os.path.abspath(‘aa.txt’)通过相对路径得到文件的绝对路径
os.path.splitext(path)分割文件与扩展名
os.path.split(path)文件的文件夹路径与文件的全名
os.path.getsize文件大小(字节数)
os.path.join(os.getcwd(),‘a’,‘b’,‘c.jpg’)可以追加多个,多一个,就是多一层:a\b\c.jpg
os.getcwd()获取文件夹的路径
os.listdir(r’c:\pq’)返回指定目录下的所有的文件和文件夹,保存到[ ]中
os.mkdir(r’c:\p3’)make创建文件夹
os.rmdir()remove删除文件夹,但只能删除空文件夹
os.removedirs()可以删除多个目录,只能空文件夹
os.remove()可以删除文件
os.chdir(r’c:\p1’)change切换至目录c:\p1文件夹,类似cd
# 如果该路径下没有,则创建一个p1文件夹
if not os.path.exists(r'c:\p1'):
	f = os.mkdir(r'c:\p1')

删文件后删除文件夹
在这里插入图片描述

在这里插入图片描述
案例: 用户名等保存在本地
在这里插入图片描述
测试是否存在用户名及密码
在这里插入图片描述

  • 异常
    格式:
    try:
    except:
    except **ERROR:
    except exception:
    finally:

用途:
程序不出错、正常运行全部
可以弹准确的错误信息,方便查找原因
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
如在代码中使用else(不报错就会进else),则不能使用return
在这里插入图片描述
finally 一般会放close()

列表推导式:

def func():
	newlist = []
	for i in range(5):
		if i%2==0:
			for j in range(10):
				newlist.append((i,j))
	return newlist
# 如有if else的推导式
newlist = [(x,y) for x in range(5) if x%2==0 for y in range(10) if y%2!=0]
newlist = [x for x in range(5) if x%2==0 and x%5!=0]
newlist2 = [ x+200 if x>5  else x-100 for x in range(5) ]

集合推导式:去重复{}
字典推导式:{value : key for key,value in dict1.items()}

  • 生成器generator,迭代器
  • 列表推导式的【】换成()就变成 了生成器

next(g)
g.next()
g.send()
函数中有yield = return +暂停

def func():
	n = 0
	while True:
		n+=1
		yield n
g = func()
next(g)
next(g)
next(g)
next(g)		
  • 进程 - 线程 - 协程
    多个进程分别独立,互不干涉
    一个进程可以分为多个线程
    一个线程可以分支成多个协程
def A:
	for i in range(n):
		print('听第{}首歌'.format(n))
		yield None
def B:
	for i in range(n):
		print('吃第{}个包子'.format(n))
		yield None
p = A(10)
p1 =B(10)
while True:
	try:
		next(p)
		next(p1)
	except:
		pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值