python基础之IO编程
读文件
with open('/path/to/file', 'r') as f:
print(f.read())
调用read()会一次性读取文件的全部内容,read()
函数里面可以传入每次最多读取的字节大小,另外调用readline()
函数可以每次读取一行内容,调用readlines()
一次读取所有内容并按行返回list
f = open(''/path/to/file', 'r')
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉
写文件
为了保证数据被全部写入到磁盘文件里面,这里采用用with语句。
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!') #在python解释器下会返回写入的字符串长度。
要写入特定编码的文本文件,请给open()
函数传入encoding
参数,将字符串自动转换成指定编码。
StringIO
StringIO就是说在内存中读写str。示例如下:
写入StringIO
>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> print(f.getvalue())
hello
读取StringIO
>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> line = f.readline()
>>> while line:
... print(line.strip())
... line = f.readline()
...
Hello!
Hi!
Goodbye!
BytesIO
BytesIO实现了在内存中读写bytes,示例如下:
写入BytesIO
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
读取BytesIO
>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'
如果我们要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成,操作系统提供的命令只是简单地调用了操作系统提供的接口函数,Python内置的os模块也可以直接调用操作系统提供的接口函数。打开python的交互式命令行,我们来看一下如何使用os模块的基本功能。
>>> import os
>>> os.name #操作系统类型
'nt'
如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。
要获取详细的系统信息,可以调用uname()
函数,注意uname()
函数在Windows上不提供,也就是说,os模块的某些函数是跟操作系统相关的。
os.path.split()
函数就会返回以路径和最后一个文件名组成的元组 (path, last_part):
>>> import os
>>> _, filename = os.path.split('/home/luciano/.shh/idrsa.pub')
>>> filename
'idrsa.pub'
>>>
认真对待每一天,加油