【学习记录】Python3版本(9:IO编程)
2020-03-08 本文已影响0人
天有三光
IO编程总述
IO即Input、Output。数据存入叫Input,写出叫Output。
Stream(流)是其重要概念。
CPU和内存速度远高于磁盘等外设。这就存在两种处理方式,一是同步,二是异步。
就像是在等女朋友约会,你永远要先等一个小时。这时候就存在两种处理方式,一是老老实实原地等她(同步),二是在等的时候顺便去隔壁网吧打一把LOL(异步)。
可预见的,虽然异步操作十分高效,但带来的问题是,你要么和女朋友约定到时候来网吧找你(回调模式),要么不断地在灰屏期间溜到窗边看你女朋友到了没有(轮询模式)。
文件读写
现代操作系统不允许普通程序直接操作磁盘,因此一切操作都由操作系统承担。
读文件
f.open('地址','r')
>>> f=open('C:\Users\A Sleeping Forest\Desktop/新建文本文档.txt','r')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
#由于我是直接复制的文件属性中的地址,因此都是右斜的斜杠,python报错。
>>> f=open('C:/Users/A Sleeping Forest/Desktop/新建文本文档.txt','r')
>>> f
<_io.TextIOWrapper name='C:/Users/A Sleeping Forest/Desktop/新建文本文档.txt' mode='r' encoding='cp936'>
>>> for i in f:print(i)
okk
>>> f.read()
''
>>> for i in f:print(i)
#这好像是说明,用for访问文件,会使得f失去数据?那么对本身文本有影响吗?
>>> f
<_io.TextIOWrapper name='C:/Users/A Sleeping Forest/Desktop/新建文本文档.txt' mode='r' encoding='cp936'>
>>> f=open('C:/Users/A Sleeping Forest/Desktop/新建文本文档.txt','r')
>>> f.read()
'okk'
#再对f进行一次赋值,发现恢复了。for循环读数据会对变量本身造成“推出”影响,但是对本身的文件来说,是没有影响的。
>>> f.close()
with open('','r') as f
:程序自动帮你调用完之后再处理f.close()
就不需要你再写f.close()
了
>>> with open('C:/Users/A Sleeping Forest/Desktop/新建文本文档.txt','r') as f:
print(f.read())
okk
此外,还可以一行行写入数据,而不直接read一股脑把所有数据写入内存,防止内存爆炸。
如果要读取图片或视频等二进制文件,将参数'r'
,调整为'rb'
另外,千万别手贱read=。=......(点根烟压压惊)
写文件
f.open('','w')
,f.open('','wb')
,f.write('')
StringIO和BytesIO
暂时略过
操作文件和目录
import os
环境变量
os.environ
可查看
os.environ.get('')
获取该环境变量的值
操作文件和目录
要注意这些函数一部分在os模块中,一部分在os.path模块中。
并且注意,windows系统与其他系统文件目录的分隔符不相同,因此一定要调用函数来保证程序不会因为操作系统不同而出现水土不服......
pass
先pass下面的,以后再改orz,学不下去了。不知道这段东西怎么用,就完全不想学啊。我是真的菜。