python简单的文件读写操作

我们想要对一个文件进行读写操作,就要先知道该文件的
绝对路径,打开文件就要使用python内置得到open函数
open函数有常用的三个参数,分别表示:文件路径(file),
打开文件的模式(mode),编码格式(encoding)。
打开文件的模式基础的有:'r','w','a'分别表示 只读,
只写,追加写。其中'w'模式下,新写入的内容会把原先
文件中的内容替换掉。'a'模式下,会在光标处添加我们要
写入的内容,假如光标在文件原先的内容中,那新添加的
内容将会把光标后面原有的等量文件内容替换掉,假如光标在原
有文件内容末尾(默认),那只会新追加新的内容,不会替换
掉原有。
对文件进行读取操作我们用read函数,写入操作我们使用
write函数。对文件操作完成之后,我们还需要对文件进行
关闭操作使用close函数
看几个小例子,第一个是对文件进行读取操作:
path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'r',encoding='utf-8')
a = file_name.read()
print(a)
file_name.close()
执行结果:
G:\Pyproject\venv\Scripts\python.exe G:/Pyproject/pachong/pachong.py
ningshuang is very cute
shuang sister is very cute
这是对文件进行读取操作,将整篇文章读取出来
假如我们想要读一行呢,那就是用readline函数:

path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'r',encoding='utf-8')
a = file_name.readline()
print(a)
file_name.close()
执行结果:
G:\Pyproject\venv\Scripts\python.exe G:/Pyproject/pachong/pachong.py
ningshuang is very cute
假如我们想要多读取几行呢,那就使用readlines函数:
G:\Pyproject\venv\Scripts\python.exe G:/Pyproject/pachong/pachong.py
['\ufeffningshuang is very cute\n', 'shuang sister is very cute']
读取的结果是生成了一个列表,列表中的每一个元素
代表一行的内容。
第二个例子是对文件进行写入操作('w'模式):
我们先看一下文件的原有内容:
ningshuang is very cute
shuang sister is very cute

path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'w',encoding='utf-8')
file_name.write('the eyes of ningshuang are very big')
file_name.close()
执行后,文件内容变成了:
the eyes of ningshuang are very big
原有内容被替换。
至于你想写入多行时,就相当于把readlines的操作
反过来:
path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'w',encoding='utf-8')
L = ['the eyes of ningshuang are very big\n','I like shuang sister very much\n']
file_name.writelines(L)
file_name.close()
执行后,文件内容:
the eyes of ningshuang are very big
I like shuang sister very much

第三个例子是对文件内容进行增加操作:

path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'a',encoding='utf-8')
file_name.write('the weather of today is very terrible')
file_name.close()
执行后,文件内容:
the eyes of ningshuang are very big
I like shuang sister very much
the weather of today is very terrible

python还提供了两个函数seek和tell函数,前者
告诉你读写操作的起始位置,后者告诉你光标当
前的位置,当然,只用这两个函数时,一般是在纯
英文环境下,否则执行的结果可能不是太准确,
我们测试一下:

path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'r',encoding='utf-8')
file_name.seek(3)
print(file_name.read())
file_name.close()
执行结果是:
G:\Pyproject\venv\Scripts\python.exe G:/Pyproject/pachong/pachong.py
 eyes of ningshuang are very big
I like shuang sister very much
the weather of today is very terrible
我们从第三个字符之后开始读取,所以没有the。

path = r'C:\Users\DELL\Desktop\abc.txt'
file_name = open(path,'r',encoding='utf-8')
file_name.seek(5)
print(file_name.tell())
file_name.close()
执行结果:
G:\Pyproject\venv\Scripts\python.exe G:/Pyproject/pachong/pachong.py
5
我们打算是从第五个字符之后进行操作,调用tell函数
得知仙子光标的位置是5
至于写和写增加都是类似的套路。上面也有描述。

我们再来看一下二进制文件的读写操作,就是在上面
三种模式加个b,也就是’rb’,’wb’,’ab’,当我们想将
字符串写入文件时,需要先将字符串转换成二进制 形
式,使用encode函数。对文件,图片,视频都可以进
行二进制的读取操作。

我们可以 在’rb’,’wb’上加一个+即’rb+’,’wb+’ 各自都可
以进行二进制的读写操作。

由于文件读写时都有可能产生IOError,一旦出错,后面
的f.close()就不会调用。所以,为了保证无论是否出错都
能正确地关闭文件,我们可以使用try … finally来实现:

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

但是每次都这么写实在太繁琐,所以,Python引入
了with语句来自动帮我们调用close()方法:

with open('/path/to/file', 'r') as f:
    print(f.read())

调用read()会一次性读取文件的全部内容,如果文件有
10G,内存就爆了,所以,要保险起见,可以反复调用
read(size)方法,每次最多读取size个字节的内容。另外
,调用readline()可以每次读取一行内容,调用readlines()
一次读取所有内容并按行返回list。因此,要根据需要决定
怎么调用。

如果文件很小,read()一次性读取最方便;如果不能确定
文件大小,反复调用read(size)比较保险;如果是配置文
件,调用readlines()最方便:

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉

还有一些有关文件操作的函数我就不再逐一介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值