欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python28之文件1

程序员文章站 2022-05-18 21:00:16
因为懂你,所以永恒 一、文件处理的重要性: 程序处理的数据都是在提取到内存,然后由CPU进行处理,而当断电或系统异常关机时,程序所处理的结果在内存中不会被保存。像永久的保存处理结果,对于windows系统而言,主要是将其以文件格式存放在硬盘内。 我们平时所熟知的文件格式主要有可执行文件(.exe)、 ......

因为懂你,所以永恒

一、文件处理的重要性:

  程序处理的数据都是在提取到内存,然后由cpu进行处理,而当断电或系统异常关机时,程序所处理的结果在内存中不会被保存。像永久的保存处理结果,对于windows系统而言,主要是将其以文件格式存放在硬盘内。

  我们平时所熟知的文件格式主要有可执行文件(.exe)、演示文档(.ppt)、文本文档(.txt)、视频文件(.mp4和.avi等)、图片文件(.jpg和.bmp等)

二、打开文件的方法及打开模式

  open(‘文件路径及文件名’,‘打开模式’)

  第一个参数注意使用转义字符;

  第二个参数:默认为‘r’

  ‘w’:以写模式打开文件

  ‘r’:以只读模式打开文件,不允许对文件内容进行编辑和添加

  ‘x’:以写入模式打开文件,如果不存在该文件则新建,如果存在则报错

  ‘a’:以追加模式打开文件,如果不存在该文件则新建,存在则在文件末尾追加写入

  ‘b’:以二进制模式打开

  ‘t’:文本模式打开

  ‘w+’:以写模式打开文件,文件不存在则新建,文件存在则清空重写

三、文件对象方法

  1、f.write(str)函数

  将一个字符串写入文档,并返回当前的字符数;文档写入后内容还存在于内存中,为了能够永久存在,需要执行关闭文档,即函数f.close()

 

1 f = open('c:\\users\\15460\\desktop\\kst.txt','wt')
2 >>> f.write("湖人总冠军!\n")
3 7
4 >>> f.close()

  2、f.writelines(seq)函数

  将一个字符串序列seq写入到文档内,seq是一个字符串的可迭代对象 

1 seq = '\n我是冠军,we are champion!'
2 f = open('c:\\users\\15460\\desktop\\kst.txt','wt')
3 f.writelines(seq)
4 f.close()

  3、f.read(size)函数

  读取文档内容,size不指定时,默认输出文档全部并以一个字符串形式输出,当size指定时,值小于0时,输出文档全部内容;大于0时,则输出size个字符。

  且输出字符串后,文件的指针指向输出的最后一个字符位置,我们可以通过函数f.tell()获得当前的文件指针位置,并且利用f.seek(offset,from)来重置文件指针位置:0表示从文件开头,1表示文件指针当前位置,2表示文件末尾位置,offset为偏置字节数

1 kst = open('c:\\users\\15460\\desktop\\kst.txt','a+')
2 print(kst.read())
3 (什么也没读出来,是因为文件的指针指在文件的末尾,所以什么也读不出来,我们需要使用seek()函数把指针设置到文件开始的位置)
4 kst.seek(0)
5 0
6 print(kst.read())
7 我是总冠军
8 我是总冠军我是总冠军我是总冠军我是总冠军

  4、f.readline()函数

  f.readline()函数可以读取一行文档内的值

 1 kst = open('c:\\users\\15460\\desktop\\kst.txt','a+')
 2 >>> kst.seek(0)
 3 0
 4 >>> kst.readline()
 5 '我是总冠军\n'
 6 >>> kst.tell()
 7 12
 8 >>> kst.seek(0)
 9 0
10 >>> for each_line in kst:
11     print(each_line,end=' ')
12     
13 我是总冠军我是总冠军我是总冠军我是总冠军
14  我是总冠军
15  我是总冠军
16  我是总冠军
17  我是总冠军
18  
19  我是总冠军
20  我是总冠军
21  我是总冠军
22  我是总冠军
23  我是总冠军
24  
25  我是总冠军
26  我是总冠军
27  我是总冠军
28  我是总冠军
29  
30  我是总冠军
31  我是总冠军
32  我是总冠军
33  我是总冠军
34  我是总冠军