python-文件基础知识

目录

一.文件权限

二.文件操作

1.写文件(r)

(1)r   以只读的形式打开文件,也可默认不写。(说白了就是只能读,不能操作)

(2)rb以只读形式打开二进制文件,一般是图片等

(3)r+ 打开一个文件用于读写.(可以读,也可以写)

(4)rb+ (在rb的基础上可以写,不详细介绍。同(3)一样)

2.读文件(w 和 a)

(1)w (打开一个文件用于写,如果没有会创建,有的话内容会被清空)

(2)w+(打开一个文件用于读写,没有则会创建,有的话内容会被清空)

(3)wb(同(1),只是写二进制而已)

(4)wb+(同(2),只是读写二进制而已)

(5)a (打开一个文件用于追加,如果文章存在的话,只能放在末尾开始写,没有则创建新文件)

(6)a+(打开一个文件用于追加读写,如果文章存在的话,只能放在末尾开始写,没有则创建新文件)

(7)ab(同(5)只是用于二进制文件)

(8)ab+(同(6)只是用于二进制文件)

3.其它操作

(1)read(num)

(2)readline一行一行读

(3)readlines把每行变成列表的一个元素然后输出列表

(6)writelines一次性写入

(7)tell

(8)seek

4.练习


一.文件权限

读取操作

r

以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb

以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

写操作

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+

打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

二.文件操作

根据上面的文件权限,我们来进行一个一个的操作。

首先,我们要明白文件读取的一个规则,文件中有一个指针,如果你在读或者写,都会移动!!!

假如,我现在写一篇文章,写完了,指针应该在文章尾部才对。如果我们在读,会发现读不出东西,为啥?

因为指针在最后,读是读取指针位置后面的内容。

这是我们需要读和写的两个文件。它的位置是c.txt 和 一个二进制图片

 

1.写文件(r)

(1)r   以只读的形式打开文件,也可默认不写。(说白了就是只能读,不能操作)

file = open('D:/py/7.文件操作/file/c.txt',mode ='r')
ret =file.read()
print(ret)

读取结果如下:

(2)rb以只读形式打开二进制文件,一般是图片等

file = open('D:/py/7.文件操作/file/图片1.png',mode ='rb')
ret =file.read()
print(ret)

结果如下:

会转成12进制

(3)r+ 打开一个文件用于读写.(可以读,也可以写)

在这里,我们先介绍一个后面要说的内容,如果我们用‘w’写,文件里面的内容会全部清零。

file = open('D:/py/7.文件操作/file/c.txt',mode ='r+')
ret =file.read()
print(ret)
file.write('爱你')
ret =file.read()
print(ret)

由上看,我们先读,所以读的是c.txt原本的内容。之后我们用write写,所以内容会被清零,只留下‘爱你’。

结果如下:

(4)rb+ (在rb的基础上可以写,不详细介绍。同(3)一样)

2.读文件(w 和 a)

(1)w (打开一个文件用于写,如果没有会创建,有的话内容会被清空)

你只要用这个,原文就会被删除!!!!

file = open('D:/py/7.文件操作/file/c.txt',mode ='w')
file.write('斯人若彩虹')

原文已被删除,只有我们写的内容

(2)w+(打开一个文件用于读写,没有则会创建,有的话内容会被清空)

file = open('D:/py/7.文件操作/file/c.txt',mode ='w+')
file.write('斯人若彩虹')
file.seek(0,0)
ret1 = file.read()
print('我是第一次写:',ret1)

这个功能能够让我们变写变读,现在我们试试

首先,我们只要调用这个功能!内容就会被清空!!,我们写了进去,但是如果读读不出来(因为指针在文章最后!),所以我们调用seek函数(后面会说),这边把指针变到文章开头,就能读出来!

结果如下:

 

(3)wb(同(1),只是写二进制而已)

(4)wb+(同(2),只是读写二进制而已)

(5)a (打开一个文件用于追加,如果文章存在的话,只能放在末尾开始写,没有则创建新文件)

原文件:

使用程序:

file = open('D:/py/7.文件操作/file/c.txt',mode ='a')
file.write('斯人若彩虹')

(6)a+(打开一个文件用于追加读写,如果文章存在的话,只能放在末尾开始写,没有则创建新文件)

原文件:

使用程序:

file = open('D:/py/7.文件操作/file/c.txt',mode ='a+')
print(file.read())
file.write('斯人若彩虹')

 

(7)ab(同(5)只是用于二进制文件)

(8)ab+(同(6)只是用于二进制文件)

3.其它操作

(1)read(num)

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,会导致程序卡死,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。

读取上面文件:

file = open('D:/py/7.文件操作/file/cc.txt',mode ='r')
file.seek(0,2)
a = file.tell()
file.seek(0,0)
for i in range(0,a,3):
    print(file.read(3))
 

(2)readline一行一行读

因为每读到\n就会换行,所以我们print的时候要加end=‘’,避免再次换行

file = open('D:/py/7.文件操作/file/cc.txt',mode ='r')
file.seek(0,2)
a = file.tell()
file.seek(0,0)
for i in range(0,a,3):
    print(file.readline(),end='')
 

(3)readlines把每行变成列表的一个元素然后输出列表

file = open('D:/py/7.文件操作/file/cc.txt',mode ='r')
print(file.readlines(),end='')

 

(6)writelines一次性写入

file = open('D:/py/7.文件操作/file/cc.txt',mode ='w+')
lst = ['aa\n','bb','c']
file.writelines(lst)

(7)tell

tell获取文件当中当前光标所在的位置

 

(8)seek

seek移动光标位置

参数:

offset  移动的长度(字节)

whence 相对位置 0从开头(默认),1从当前,2从末尾

 

4.练习

要求:阅读电子书,自动翻页,每次就翻3页,阅读完要有提示

import time
def aa(path,line = 3):
    with open(path,'r') as a:
        a.seek(0, 2)
        end = a.tell()

        a.seek(0,0)
        while True:

            for i in range(line):
                print(a.readline(),end='')
            time.sleep(1)
            b = a.tell()
            if b == end:
                print('阅读结束!')
                break



aa('d:/py/7.文件操作/file/cc.txt')

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值