python自动化(一)基础能力:8.python文件读写

一、python文件读写

文件的读写是我们经常用到的操作,常用的编程语言都会提供一个内置函数,通过输入'文件路径'和'文件打开模式'来打开一个文件对象。

以下是常见的python中的文件中读写操作

(一)、常见的几种打开模式

打开模式 用法
r 以只读的方式打开文件,若文件不存在,会报错
r+ 可以同时读写,若文件不存在,会报错,写入时是覆盖写入
w 以只写的方式打开文件,若文件不存在则新建,写入时是清空写入
w+ 可以同时读写,若文件不存在则新建,写入时是清空写入
a 以只追加可写模式打开文件,若文件不存在则新建 ,写入时是追加写入
a+ 可以同时读写,若文件不存在则新建,写入时是追加写入

(二)、打开模式练习

1.再D盘创建test1.txt文件

2.’r‘只读 ——read

代码:

filepath = r'D:\test1.txt'#找到文件的路径,字符串的外面加一个r,表示后面的字符串的所有转义符均不生效
file1 = open(filepath,'r',encoding='utf-8')
print(file1.read())#read()函数--读取全部内容,后有详解
#通过只读'r'的方式打开文件
#因为文件里是中文,所以我们指定编码方式为‘utf-8’
#'r'是open函数中‘打开方式’的缺省值,可以省略
file1.close()#关闭文件 使用open()时,必须要有close(),否则会一直占用内存

运行截图:

如果,用只读'r'打开一个不存在的文件'test2.txt',则会报错,运行截图如下:

3. r+ 读写--覆盖写入—read+

代码:

# r+ 读写--覆盖写入
filepath = r'D:\test1.txt'
file1 = open(filepath,'r+',encoding='utf-8')#通过'r+'的方式打开文件
file1.write('呱唧呱唧')#以覆盖写入的方式写入'欢迎交流'
file1.seek(0)#seek(n):光标回到文件首位,之后偏移n位
print(file1.read())
file1.close()

运行截图:

以上代码中运用到了seek(n)函数,这是因为我们写入内容后,光标位置在刚写入内容的后边,而读取文件内容时,是从光标的位置开始往后读,这时候就需要移动下光标位置以能获取文件全部内容。

我们看下上边例子中,不使用seek移动光标,输出的内容:

 备注:用'r+'打开一个不存在的文件'test2.txt',同样会报错

4.w 只写—write

 只写‘w’方式,只能写入,不能读取,否则会报错。写入情况分以下两种:

(1)在已存在的文件中进行写入,会清空文件中之前的内容

代码:

# w 只写—write
filepath = r'D:\test1.txt'
file1 = open(filepath,'w',encoding='utf-8')#通过只写'w'的方式打开文件
file1.write('欢迎交流')
file1.close()

运行截图:

 (2)只写‘w’方式打开不存在的文件,会新建文件并写入内容

代码:

filepath = r'D:\test2.txt'
file1 = open(filepath,'w',encoding='utf-8')#通过只写'w'的方式打开文件
file1.write('啊啊啊啊啊啊啊啊啊啊')
file1.close()

运行截图:

 5.w+ 读写--清空写入—write+

'w+'比'w'模式多了同时读写的功能,其他完全一样。

代码:

# W+,
filepath = r'D:\test_new.txt'#不存在的文件
file1 = open(filepath,'w+',encoding='utf-8')#通过'w+'的方式打开文件
file1.write('这是个新文件')
file1.seek(0)#光标回到首位
print(file1.read())
file1.close()

运行截图:

 6.a 只写--追加写入

我们经常会有这样的需求,在写入内容时不想删除之前的内容。

打开模式'a'就可以满足。

与打开模式'w'唯一的区别就是写入方式为'追加写入'

也可以理解为比'w'方式多了一个'把光标移到末尾'的操作

代码:

filepath = r'D:\test_new.txt'
file1 = open(filepath,'a',encoding='utf-8')#通过追加写'a'的方式打开文件
file1.write('欢迎交流')#追加写入内容
file1.close()

运行截图:

7.a+ 读写--追加写入

'a+'比'a'模式多了同时读写的功能,其他完全一样。

代码:

filepath = r'D:\test_new.txt'
file1 = open(filepath,'a+',encoding='utf-8')#通过'a+'的方式打开文件
file1.write('\naaaaaaaaaaaaaaaaaaaaaaaaaaa')#追加写入内容
file1.seek(0)#把光标移到首位
print(file1.read())
file1.close()

运行截图:

(三)、with open

为了避免忘记或者为了避免每次都要手动关闭文件,我们可以使用with语句

用法与open()一样

优点:

(1)它可以处理多个文件
(2)不需要写close()方法

代码:

filepath1 = r'D:\newfile1.txt'
filepath2 = r'D:\newfile2.txt'

with open(filepath1,'w+') as file1,open(filepath2,'w+') as file2:
#同时打开两个新建文件
    file1.write('测试龙巫师')#文件1写入内容
    file2.write('aaaaaaaa')#文件2写入内容
    file1.seek(0)#文件1光标移到首位
    file2.seek(0)#文件2光标移到首位
    print(file1.read())
    print(file2.read())

运行截图:

(四)、文件读取相关方法

方法 作用
read() 读取文件全部内容,返回值是字符串
readline() 读取一行的内容,返回值是字符串
readlines() 逐行读取文件所有内容,返回值是列表
read().splitlines() 读取文件全部内容,返回值是列表,不出现换行符

以下是几种方法常见用法:

(1)先建一个new_test.txt,内容如下

(2)read()

代码:

filepath = r'D:\new_test.txt'
with open(filepath,encoding='utf-8') as file:
    print(file.read())#使用read()读取全部内容

运行截图:

(3)readline()

代码:

with open(filepath, encoding='utf-8') as file:
    print(file.readline())

运行截图:

(4)readlines()

代码:

with open(filepath, encoding='utf-8') as file:
    print(file.readlines())

运行截图:

(5)read().splitlines()

代码:

with open(filepath,encoding='utf-8') as file:
    print(file.read().splitlines())

运行截图:

猜你喜欢

转载自blog.csdn.net/weixin_39355323/article/details/122574830