IO编程

#金庸先生今天去世了,纪念一下!

1.读文件

打开文件 open()

f=open(D:\git\learn\test7.txt,'r')     #  'r' 表示读

读取文件内容 f.read()
关闭文件 f.close() 文件使用完之后必须关闭
保证读取文件出错的时候也能关闭文件用 try… finally

try:
	f=opean(D:\git\learn\test7.txt,'r')
	print(f.read())
finally:
	if f:
		f.close()

可以用with语句,可以自动调用close()

with open(D:\git\learn\test7.txt,'r') as f:
	print(f.read())

读取二进制文件,用’rb’模式打开
非utf-8编码的文本,需要open()传入encoding参数

f = open('/Users/michael/test.jpg', 'rb')
f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')

2.写文件

和读文件类似,在调用open()时,传入’w’或者’wb’

with open(f = open(D:\git\learn\test7.txt,'w'):
	f.write('hello,world')

3.StringIO和BytesIO

StringIO就是在内存中读写str
BytesIO实现了在内存中读写bytes

>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
...     s = f.readline()
...     if s == '':
...         break
...     print(s.strip())
...
Hello!
Hi!
Goodbye!
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'

4.操作文件和目录

python内置的OS模块提供可以直接调用操作系统提供的接口函数
操作文件和目录的函数的一部分放在OS模块中,一部分放在os.path中
查看创建和删除目录

#查看当前的目录的绝对路径
os.path.abspath('.')
#在某个目录下创建一个新的目录首先把新目录的完整路径表示出来
os.path.jion(D:\git\learn,'test7.text')
#然后创建一个目录
os.mkdir(D:\git\learn\test7.text)
删除一个目录
os.rmdir(D:\git\learn\test7.text)
#得到文件扩展名
 os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# 对文件重命名:
 os.rename('test.txt', 'test.py')
# 删掉文件:
 os.remove('test.py')

5.序列化

把变量从内存中变成可存储或传输的过程称之为序列化,在python中叫pickling
pickle.dumps()把任意一个对象序列化成bytes,可以把bytes写进文件

>>> import pickle
>>> d = dict(name='Bob', age=20, score=88)
>>> pickle.dumps(d)
>
>>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()

反序列化 pickle.load()

>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值