文件 file
什么是文件:
1、文件是数据存储的单位
2、文件通常用来长期存储数据
3、文件中的数据是以字节为单位进行顺序存储的
文件的操作流程:
1、打开文件
2、读写文件
3、关闭文件
任何的操作系统,一个应用程序同时打开文件的数量是有最大数限制的
文件的打开函数 open
open(file,mode=‘rt’)用于打开一个文件,返回此文件对应的文件流对象,如果打开失败,则会触发OSError错误!
文件关闭方法:
F.close()关闭,释放系统资源
python文件读写的类型有两种:
1、文本文件(text file)
2、二进制文件(binary file)
文本文件的操作
默认文件中存储的都为字符数据,以行为单位进行分割,在pythonn内部统一用‘\n’作为换行符进行分割
文本文件读写需要用字符串(str)进行数据读取和写入
各种操作系统的换行符:
Linux换行符 :“\n”
Windows换行符:“\r\n”
旧的Macintosh:“\r”
新的Mac OS换行:“\n”
文件中常用的方法:
f.close() 文件关闭(关闭后文件不能再读写,否则会发生ValueError错误)
f.readline() 读取一行数据,如果到达文件尾则返回空行,返回的是数据结尾会有一个“\n”符号
try: f = open("info.txt") while True: s = f.readline() if s == '': break if s[-1] == "\n":#此处解决双换行 print(">>>",s[:-1]) else: print(">>>",s)#最后一行没有“\n”符号 except OSError: print("打开文件失败!")
f.readlines(max_chars=-1) 返回每行字符串的列表,max_chars为最大字符串(或字节数)
f.read(size=-1) 从一个文件中最多读取size的字符,不管是1个中文还是1个字母都代表1
f.writelines(lines) 每行字符串的列表,没有返回值
f = open("mynote.txt","w") L = ["我是第一行\n","我是第二行"]#列表的每个元素后面要加\n换行符 f.writelines(L) f.close()
f.write(text) 写一个字符串到文件流中,返回写入的字符数
f = open("mynote.txt","w") a = f.write("hello")#把字符串写入文件的同时返回一个int类型的数,次数代表字符串的长度 print(type(a),a) # <class 'int'> 5 f.close()
f.flush() 把写入文件对象的缓存内容写入到磁盘
mode 模式字符的含义
"r" 以只读方式打开(默认)
"w" 以只写方式打开,删除原有文件内容,如果文件不存在,则创建
"x" 创建一个新文件,并以写模式打开这个文件,如果文件存在,则产生”FileExistsError“错误
"a" 以只写方式打开一个文件,如果有原文件则追加文件末尾
"b" 用二进制模式打开
"t" 文本文件模式打开(默认)
"+" 为更新内容打开一个磁盘文件(可读可写)
"a" 以只写方式打开一个文件,如果有原文件则追加文件末尾
"b" 用二进制模式打开
"t" 文本文件模式打开(默认)
"+" 为更新内容打开一个磁盘文件(可读可写)
"rt或tr" 缺省模式
"w+b" 可以实现二进制随机读写,当打开文件时,文件内容将被清空
"r+b" 以二进制读和更新模式打开文件,打开文件时不会清空文件内容
"r+" 以文本读和更新模式打开文件,打开文件时不会清空文件内容
文本文件的迭代读取:
open()函数返回来的文件流对象是可迭代对象
f = open("abc.txt")#f是一个可迭代对象,可以使用iter()和next()函数读取数据 for line in f:#每次读取一行,相当于line = f.readline() print(line) f.close()
标准输入输出文件:
模块名:sys
sys.stdin (默认为标准键盘输入设备)
ctrl +d 输入文件末尾标识符(linux和苹果系统下)
import sys s = sys.stdin.readline() print("从键盘读取的第一行是:",s) s = sys.stdin.read()#Ctrl+d是文件末尾的标识符,不会读取第一行的数据,因为被readline读取过了 print("read读取的信息是",s) s = sys.stdin.readlines() print("readlines读取的信息是:",s) print("程序退出")
sys.stdout (默认为屏幕终端)
sys.stderr (默认为屏幕终端)
标准文件不需要打开和关闭就可以使用
import sys a = sys.stdout.write("hello\n") print(type(a),a)#<class 'int'> 6 b = sys.stdout.write("Error\n") print(type(b),b)#<class 'int'> 6