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‘\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...‘ # 十六进制表示的字节
- 字符编码
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\nHi!\nGoodbye‘) 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‘)
原文地址:https://www.cnblogs.com/yangaoteng666/p/9274247.html
时间: 2024-10-08 14:56:24