python IO操作
Posted yangaoteng666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python IO操作相关的知识,希望对你有一定的参考价值。
python io编程
- 读写文件是常见的io操作,python内置了读写文件的函数,用法与C是兼容的。
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘.
读文件
要以读文件模式打开一个文件列表,使用
open()
函数,并传入文件名和标识符:f = open(r‘.1.txt‘,‘r‘)
- 这是第一个
r
表示引号里面的东西不转义,第二个r
表示读。
- 这是第一个
如果文件成功打开,我们调用
read
方法可以一次性读取全部内容:f = open(r‘.1.txt‘,‘r‘) f.read() ------------ ‘hello,word!‘
最后一步调用
close()
方法关闭文件。f.close()
由于读写文件时有可能发生错误,一旦出错,后面的
f.close()
就不会被调用。所有我们使用try.....finally
来实现:try: f =open(r‘.1.txt‘,‘r‘) print(f.read()) finally: if f: f.close()
每次这么写就太繁琐了,所以,python引出了
with
语句来自动调用close()
方法:with open(r‘.1.txt‘,‘r‘) as f: print(f.read())
- 调用
read
会一次性读取文件的全部内容,如果文件有10G,内存就炸了。- read(size) 每次读取
size
个字节的内容 - readline()每次读取一行内容
- readlines()一次读取所有内容并返回
list
- read(size) 每次读取
读取二进制文件
>>> f = open(‘/Users/michael/test.jpg‘, ‘rb‘) >>> f.read() b‘xffxd8xffxe1x00x18Exifx00x00...‘ # 十六进制表示的字节
字符编码
f =open(‘.1.txt‘,‘r‘,encoding = ‘gbk‘,errors=‘ignore‘)
errors
会忽略错误编码字符
写文件
f = open(‘.1.txt‘,‘w‘) f.write(‘hello,word‘) f.close()
python io操作标识符
- ‘r‘ 开放阅读(默认)
- ‘w‘打开写入,先截断文件
- ‘x‘ 打开以进行独占创建,如果文件已存在则失败
- ‘a‘ 打开以进行写入,如果存在则附加到文件的末尾
- ‘b‘ 二进制模式
- ‘t‘ 文字模式(默认)
- ‘+‘ 打开磁盘文件进行更新(读写)
StringIO 和ByterIO
StringIO
- 很多时候,数据读写不一定是文件,也可能在内存中读取
stringIO顾名思义就是在内存中读取str。
from io import StringIO f = StringIO() f.write(‘hello‘) f.write( ‘ ‘) print(f.getvalue())
- getvalue()方法用于获得写入后的str。
要读取StringIO,可以初始化StringIO,然后,像读文件一样读取:
from io import StringIO f = StringIO(‘Hello Hi! Goodbye‘) while True: s = f.readline() if s == ‘‘: break print(s.strip())
BytesIO
BytesIO实现了在内存中读取bytes,我们创建一个BytesIO,然后写入一些bytes
from io import BytesIO f = BytesIO() f.write(‘中午‘.encode(‘utf-8‘)) print(f.getvalue())
操作文件和目录
os的基本功能
import os os.name --------- ‘nt‘
在操作系统中定义的环境变量,全部保存在
os.environ
这个变量中,可以直接查看:import os os.environ # get 获取单个环境的变量 os.environ.get(‘PATH‘)
操作文件和目录
操作文件和目录的函数一部分放在os模块中,一部分放在了
os。path
中# 查看当前目录的绝对路径 os.path.abspath(‘.‘) # 在在某个目录下创建一个新目录,首先把新目录的完整路径表示出来 a=os.path.join(‘/Users/michael‘,‘testdir‘) # 删除一个目录 os.rmdir("a") # 创建一个目录 os.mkdir("a")
- 把两个路径合成一个时,不要直接拼接字符,而要通过
os.path.join()
.这样可以正确处理两个操作系统路径分隔符不同的情况 同样,才分路径的时候用
os.path.split()
函数os.path.split(‘/Users/michael\testdir.txt‘) (‘/Users/michael‘, ‘testdir.txt‘)
os.path.splitext
可以直接获得文件的扩展名os.path.splitext(‘/Users/michael\testdir.txt‘) (‘/Users/michael\testdir‘, ‘.txt‘)
以上是关于python IO操作的主要内容,如果未能解决你的问题,请参考以下文章
csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us
[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段