文件操作

一、文件概念

计算机系统分为:计算机硬件,操作系统,应用程序三部分。

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:

 

例子:

1 flies=open('t2.txt','r',encoding="utf-8")
2 l=flies.read()
3 print(l)
4 flies.close()
View Code

二、文件编码

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")
View Code

 

三、文件的修改

文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(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')
View Code

 

posted @ 2018-04-19 15:39  鱼丸粗面没鱼丸  阅读(137)  评论(0编辑  收藏  举报