文件操作
一、文件概念
计算机系统分为:计算机硬件,操作系统,应用程序三部分。
我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。
有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:
例子:
1 flies=open('t2.txt','r',encoding="utf-8") 2 l=flies.read() 3 print(l) 4 flies.close()
二、文件编码
windows一般默认编码为gbk,Linux 默认编码为utf-8,mac默认编码uft-8,对文件操作时,要指定编码.
三、文件操作
read(3):
1. 文件打开方式为文本模式时,代表读取3个字符
2. 文件打开方式为b模式时,代表读取3个字节
其余的文件内光标移动都是以字节为单位的如:seek,tell,truncate
注意:
1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果。
f1=open(r'D:\t2.txt','r',encoding="utf-8")
f1,文件句柄,文件对象,file,f_handle,file_handle,f_obj
open打开的指令,windows的指令,
windows 默认编码方式gbk,linux默认编码方式utf-8,mac utf-8。
1,打开文件,产生文件句柄。
2,操作文件句柄。
3,关闭文件。
1 import time 2 with open('access.log','rb') as f: 3 f.seek(0,2) 4 while True: 5 lines=f.read() 6 if lines: 7 print(lines.decode(),end="") 8 else: 9 time.sleep(1) 10 11 12 13 14 15 #往access.log写入 16 with open('access.log','a') as f: 17 f.write("1111111111222\n")
三、文件的修改
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:
方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
1 with open("t2.txt","r", encoding="utf-8") as f1,\ 2 open("t2.txt.swap",'w',encoding="utf-8") as f2: 3 for line in f1: 4 data=line.replace('马老师师','金牌讲师') 5 f2.write(data) 6 os.remove('t2.txt') 7 os.renames('t2.txt.swap','t2.txt')
本文来自博客园,作者:鱼丸粗面没鱼丸,转载请注明原文链接:https://www.cnblogs.com/Robi-9662/p/8883412.html