文件基本操作
1 什么是文件
侠义说:文本文件:广义说:超文本文件,图片,声音,超链接,视频
2.文件的分类 文件大体上可以分为两类,文本文件和二进制文件
3.文件的作用 使用文件的目的是把一些数据存储存放起来
4.使用文件的流程
我们操作文件的流程一般是 打开文件,读写文件,关闭文件。通过程序操作文件的流程也是这三步
首先打开文件,然后读写文件,最后关闭文件
写文件
file = open('test1.py',mode='w') file.write('hello johnson') file.close() # # # 写入中文 # # python读写用的是gbk编码,pycharm用的是utf-8 # file = open('test.txt',mode='w',encoding='utf-8') file.write('我叫强森,俗称你爸爸') file.close()
# wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除
# 如果该文件不存在,即创建新文件。一般用于非文本文件如图片
file = open('test.txt','wb')
file.write(b'xe6x88x91xe5x8fxabxe5xbcxbaxe6xa3xaexefxbcx8cxe4xbfx97')
file.close()
# w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,
# 即 原有内容会被删除。如果该文件不存在,创建新文件。
file = open('test.txt','w')
file.write('zheshigeshenmewanyi')
file.close()
读文件
file = open('test.txt',mode='r',encoding='utf-8') print(file.read()) file.close()
# r以只读方式打开文件。文件指针将会放在文件的开头。这是默认模式。
file = open('test.txt','r',encoding='utf-8')
print(file.read())
file.close()
# rb以二进制打开一个文件用于只读。文件的指针将会用在文件的开头
# 一般用于 非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的bytes字符串类型
file = open('test.txt','rb')
print(file.read())
file.close()
# r+ 打开一个文件用于读写。文件指针将会放在文件的开头
file = open('test.txt','r+')
file.write('johnson')
file.close()
追加
file = open('test.txt',mode='a',encoding='utf-8') file.write('相加就加') file.close()
# a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾
# 也就是说,新的内容将会被写入到已有内容之后。如果文件不存在。创建新文件,进行写入
file = open('test.txt','a')
file.write('what is the fuck')
file.close()
# 打开一个文件用于读写。如果该文件已存在。文件指针会放在文件的结尾
# 也就是说,新的内容将被写入已有内容之后。如果该文件不存在,创建新文件进行写入
file = open('test.txt','a+')
file.read()
file.close()
read()方法
# 调用read()会一次性读取文件的所有内容,如果文件有10G,内存就爆了,会导致程序卡死 # 所以保险起见,可以反复使用read(size)方法,每次最多读取size个字符的内容。 file = open('test.txt','r+',encoding='utf-8') print(file.read(10)) file.close()
readlines()
# readlines() 一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来 file = open('test.txt','r',encoding='utf-8') print(file.readlines()) file.close()
readline()
# readline 每次读取一行,并且自带换行功能 每一行末尾会读到 # 可以指定读取的字符个数,下一次读取会从此位置开始 file = open('test.txt','r',encoding='utf-8') ret = file.readline(5) print(ret) print(file.readline()) print(file.readline()) print(file.readline()) print(file.readline())
# 循环读取file句柄是一个可迭代的对象,因此,可以循环读取文件中的内容,每次读一行。 file = open('test.txt','r',encoding='utf-8') for i in file: print(i,end=' ') file.close()
write()和writelines()
# 写入write 和writelines file = open('test.txt','w',encoding='utf-8') list =['hello','world','jjj','john'] # for i in list: # file.write(i+' ') file.writelines(list) file.close()
with用法
正常操作文件读写的时候,执行完毕后都需要close,但是重复的close增加了重复的工作,而且有时候可能会忘记增加,所以对应来了个with
file = open('test.txt','r',encoding='utf-8') print(file.read()) file.close() # 使用with 方法操作文件,你可以不用关闭文件,会自动关闭文件 with open('test.txt','r',encoding='utf-8') as f: print(f.read()) # with内部实现了 __enter__和 __exit__方法,会自动关闭文件 class Foo: def __init__(self): print('---init---') def __enter__(self): print('---enter---') def __exit__(self,exc_type,exc_val,exc_tb): print("---exit---") foo = Foo() with foo: print('读取文件') print("最后一行代码")