python3 文件

一.创建和打开文件open(filename, mode)

1.python中windows在路径名中既可以接受斜线(/),也可以接受双反斜线(\\),也可以双斜线(//),就是不能单反斜线(\)

2.filename 变量是一个包含了你要访问的文件名称的字符串值

3.mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)

1 f=open('wenj.txt','w') #打开文件
2 f.write('python')        #操作文件
3 f.close()                    #关闭文件
4 ----------------------------------------------
5 #在当前目录创建了wenj.txt文件
6 #在创建的wenj。txt中
7 python
open

 4.文本文件:txt、doc、xls...         二进制文件:图片、视频、音乐

5.默认是读取utf-8编码的文本文件

 

二.文件对象的方法

1.file.name#读取文件名称

2.file.read(size)用于从文件读取指定的字节数,如果未给定或为负则读取所有

 1 #file.read(size)用于从文件读取指定的字节数,如果未给定或为负则读取所有
 2 fread=open('wenj.txt','r+')
 3 # size 是一个可选的数字类型的参数
 4 print(fread.read(8))#读取一定数目的数据, 然后作为字符串或字节对象返回
 5 print(fread.read())#当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回
 6 #第二次读取时,不会读取已经读取过的内容
 7 fread.close()
 8 ------------------------------------------------------------------
 9 python
10 s
11 daaaaaaaaaaaaaaa
12 faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
f.read

3.f.readline(size)从文件读取整行,包括 "\n" 字符

 1 #readline() 方法用于从文件读取整行,包括 "\n" 字符。
 2 freadline=open('wenj.txt','r')
 3 print(freadline.readline())#读取文件可以被读取的文件的第一行
 4 print(freadline.readline())#读取文件可以被读取的文件的第一行
 5 print(freadline.readline(4))#读取文件可以被读取的文件的第一行,可以指定读取的长度
 6 print(freadline.readline())#读取文件可以被读取的文件的第一行
 7 freadline.close()
 8 -------------------------------------------------------------------------
 9 python\n
10 
11 sdaaaaaaaaaaaaaaa
12 
13 faaa
14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
f.readline

4.f.readlines(size)读取所有行(直到结束符 EOF)并返回列表,(自动地将文件按换行符进行处理,将处理好的每一行组成一个列表返回)

 1 # readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表
 2 f=open('wenj.txt','r+')
 3 print(f.readlines())
 4 print(f.readlines())#返回空列表
 5 f.close()
 6 
 7 # 如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割
 8 f=open('wenj.txt','r+')
 9 print(f.readlines(10))
10 print(f.readlines(3))
11 f.close()
12 
13 
14 f=open('wenj.txt','r+')
15 for line in f.readlines():#依次读取每行
16     line=line.strip()     #去掉每行头尾空白
17     print(line)
18 f.close()
19 ------------------------------------------------------------------------------
20 ['python\\n\n', 'sdaaaaaaaaaaaaaaa\n', 'faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n']
21 []
22 ['python\\n\n', 'sdaaaaaaaaaaaaaaa\n']
23 ['faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n']
24 python\n
25 sdaaaaaaaaaaaaaaa
26 faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
f.readlines()

5.f.write(str) 将 str写入到文件中, 然后返回写入的字符数

1 # write() 方法用于向文件中写入指定字符串
2 f=open('wenj.txt','w')
3 # 如果要写入一些不是字符串的东西, 那么将需要先进行转换str()
4 print(f.write(r'python\n'))#写入内容覆盖原内容,wenj.txt中python\n
5 #返回的是写入的字符串中字符的个数8
6 f.close()
7 -------------------------------------------------------------------
8 8
f.write()

6.f.tell() 方法返回文件的当前位置,即文件指针当前位置

 1 #wenj.txt:       python sds
 2 # f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数
 3 f=open('wenj.txt','r+')
 4 print(f.tell())
 5 print(f.read(3))
 6 print(f.tell())
 7 f.close()
 8 -------------------------------------------------------------------------
 9 0
10 pyt
11 3
f.tell()

7.f.seek(offset, from_wha)移动文件读取指针到指定位置,文本文件的操作模式下(不带b)只能写0;如果想要写1或2,必须在二进制文件操作模式下(带b)

 1 #python sds
 2 
 3 #f.seek(offset, from_what)改变文件当前的位置
 4 #offset开始的偏移量,也就是代表需要移动偏移的字节数
 5 #from_what可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;
 6 # 0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起
 7 f=open('wenj.txt','rb+')
 8 print(f.seek(5))#移动到文件的第五个字节,无返回值
 9 print(f.read(3))#读取三个字节
10 print(f.seek(1))#移动到文件的第1个字节
11 print(f.read(1))#读取一个字节
12 print(f.seek(-1,2))
13 # 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常
14 print(f.read(1))
15 -------------------------------------------------------------------------
16 5
17 b'n s'
18 1
19 b'y'
20 9
21 b's'
f.seek()

8.f.close()关闭文件并释放系统的资源,清空缓冲区的数据内容到磁盘文件;f.flish()立即清空缓冲区的数据内容到磁盘文件

9.with关键字

1 # 当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。
2 # 而且写起来也比 try - finally 语句块要简短:
3 # 相当于f=open('wenj.txt','rb+')
4 with open('wenj.txt','rb+') as f:
5     print(f.read())
6 --------------------------------------------------------------
7 b'python sds'
with open() as

10.for in可以用来遍历f本身,也可以遍历行列表

11.容错处理:readable和writable方法

1 f=open('wenj.txt','a')
2 if f.readable():#判定是否可读,如果没有这行则会报错
3     content=f.readlines()
4     for i in content:
5         print(i,end=' ')
6 f.close()
7 -----------------------------------------------------
readable

12.一般来说,一般文件特别大的时候,可以使用readline:按行加载,可节省内存,但相对性能较低;而read和readlines虽然占用内存,但处理性能较高

 

三.文件方法

补充1:

 1 txt=open('write.txt','w')
 2 try:
 3     for i in range(10):
 4         10/(i-5)
 5         txt.write(str(i)+'\n')
 6 except Exception:
 7     print('error:',i)
 8 finally:
 9     txt.close()
10 ------------------------------------------------------
11 error: 5
文件写入异常

 补充2:

os模块可以对文件进行重命名,创建,删除,目录等操作

posted on 2018-05-26 20:45  温润有方  阅读(283)  评论(0编辑  收藏  举报