【python 文件操作】python 文件操作

计算机由软件、系统、硬件组成。

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

文件的操作步骤:

  1、打开文件,并返回一个语句柄并赋值一个变量

  2、通过返回的语句柄操作文件

  3、关闭文件

# 打开文件,得到语句柄赋值给一个变量

f = open("test.txt", 'w', encoding = "utf-8")

#对文件操作

f.write("11111")

#关闭文件

f.close()

#1、应用系统向操作系统发起一个open(。。。。)

#2、操作系统打开该文件,并返回一个语句柄

#3、应用程序把语句柄赋值给一个变量

#打开一个文件包含两个资源:一个是操作系统级打开文件,另一个为应用程序变量,操作完一个文件后需要把与该文件这两部分资源全部回收,

第一种方法:f.close()

第二种方法:del f

f.close(),一定要在del f 之前,否则系统打开的文件没有关闭,白白占用资源。python有垃圾自动回收机制,无需考虑del f

最好的方法可以使用with open(‘test.txt’,'w')as f:

             pass

with open('test.txt','r') as read_f ,open('tate.txt','r') as write_f:

  data = read_f.read()

  write_f.write(data)

文件以什么编码编写,需要使用对应的编码打开

文件打开模式(默认文本模式):

  r :默认读模式【默认模式,文件必须存在,否则报错】

  w:只写模式【不存在则创建,存在则清空内容】

  a:只追加写模式【不可读,不存在者创建,存在则只追加内容】

以上只适用文本模式,如需打开图片、视频、,需要使用b模式打开,表示字节操作(图片、视频,是以字节编码存储,无需考虑编码方式)

wb

rb

ab  

注释:以b模式打开文件,读取内容以字节方式,写入也需要字节方式,不能指定编码

# “+”表示可以同时读写某个文件

r+ :读写【可读、可写】

w+ :写读【可写,可读】

a+ :写读【可读、可写】

x:只写【不可读,不存创建,否则报错】

x+ :写读【可读,可写】

read(3),文本模式:读取三个字符串,b模式:3个字节、

光标:

seek(0),tell,truncate()都是一字节单位:

seek 有三种方式0,1,2,其中1,2必须在b模式下进行,truncate截断文件,不能以w/w+ 进行,那样会清空文件,请在r+/a/a+ 模式下进行。

 with的方便之处:在于防止打开文件,而忘记关闭

文件的修改有两种方法,第一种:一次性读出,操作后,然后在写入另外一个文件。然后把之前的文件删除,被写入的文件重命名为删除的文件名称

第二种:可以一行一行读入然后修改,修改后保存至另外一个文件内

 

文件操作:流程

找到——>以什么方式打开——>操作——>关闭

f =  open('test',"w")

 

1、读文件的方式(从文件中获取的内容都是字符串):

  一、read 方法,一次性的读出文件所有内容

  二、f.read(5)独一部分,读五个字符、换行符也算

  三、readline、按照行读,每次执行readline 就会读下一行

  四、readlines、返回一个列表,将列表中每一行作为列表的元素返回一个列表

strip()去掉空格、制表符、换行符

  五、for循环:for i in f:

          print(i)

 文件的  r+ :

r+ 有两种方式,

(1)先写后读

 

文件操作:2.x 有xreadliens:返回的是一个迭代器,但是在Python3.x中被弃用了,使用for循环代替

 

#text内容:this is a turncate test,***
f= open('text.txt', 'r+',encoding="utf-8")

f.write('')
print("",f.read())
f.close()
f= open('text.txt', 'r+',encoding="utf-8")
print('',f.read())
#输出结果:
一 s is a turncate test,***

二 人s is a turncate test,***

通过上面的输出结果就可以看出,文件的r+模式,先写后读模式:(1)从头开始写,而且是按照字节的方式修改。“this”是四个字节,“人”中文字符占三个字节(2)先写后读的模式,修改后紧接着输出,输出的内容和保存后修改的内容不同。

(2)先读后写(追写)

会按照追加的模式进行写入。

Python中没有方法去修改文件

(3)truncate:保留指定字节之前的内容

 

obj1 = open('text.txt','r+')
obj1.write('this is a truncate test,***')
obj1.seek(0)
print ('first read:\n',obj1.read())
obj1.truncate(5)
obj1.close()

 

posted @ 2017-10-31 17:29  AndRew-A  阅读(393)  评论(0编辑  收藏  举报