文件操作。

例题引导:

尝试导入本地的txt文件到python中,并读取该txt文件的第一行内容到一个字符串;

将python执行的输出结果保存到本地新建/现有的txt文件中;尝试导入本地的csv文件到python中,并读取csv文件内容;

这道题思路简单,主要是对今天学习内容的应用。

参考答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#读取txt
f = open('test.txt',encoding = ‘utf-8’)
line = f.readline()

#新建并存入txt文件:
with open('文件名.txt','a',encoding='utf-8') as a:
a.write()

#写入现有的txt文件:
with open('文件名.txt','w+',encoding='utf-8') as a:
a.write()

#读取csv
import csv
f = open('文件夹路径&文件名', 'r',encoding = ‘utf-8’)
csvreader = csv.reader(f)
line = list( a for a in csvreader)

学习引导:

  • 打开文件
  • 关闭文件
  • 文件读写

文件

打开文件

open() 方法

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)

完整的语法格式如下:

1
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

关闭文件

调用close()方法关闭文件

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

1
f.close()

文件读写

文件读取的方式有三种:

1)read()

read:如果指定了参数 size,就按照该指定长度从文件中读取内容,否则,就读取全文。被读出来的内容,全部塞到一个字符串里面。这样有好处,就是东西都到内存里面了,随时取用;但如果文件内容太多了,内存会吃不消。注意换行符也为占用一个内存,缺点需要知道光标的位置,以及每一行的大小SIZE。

1
2
3
f = open(r'C:\Users\WJF\test.txt', 'r',encoding='gbk')   #这里的文本文件,大家可以自己写一个,没有硬性要求。
# f.read(10)
f.read(5)
1
'DataS'
2)readline()

readline() 方法用于从文件读取整行,包括 “\n” 字符。从字面意思可以看出,该方法每次读出一行内容。所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。

语法:fileObject.readline();

1
2
3
4
5
6
7
f = open(r'C:\Users\WJF\test.txt', 'r',encoding='gbk')
while True:
line=f.read()
if not line:#到 EOF,返回空字符串,则终止循环
break
print(line)

1
2
3
4
5
6
7
8
DataScience

专注数据科学领域
分享python、Java、大数据学习干货;职场面经、求职指南等
不定期组织免费学习计划
欢迎加入我们~~~

DataScience 官方博客:https://www.a2data.cn/#indexCard这一行是新加的内容。
3) readlines()

readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。当文件太大时,内存可能不够用。 如果碰到结束符 EOF 则返回空字符串。

如果碰到结束符 EOF 则返回空字符串。

语法:fileObject.readlines( );

1
2
f = open(r'C:\Users\WJF\test.txt', 'r',encoding='gbk')
print(f.readlines())
1
['DataScience\n', '\n', '专注数据科学领域\n', '分享python、Java、大数据学习干货;职场面经、求职指南等\n', '不定期组织免费学习计划\n', '欢迎加入我们~~~\n', '\n', 'DataScience 官方博客:https://www.a2data.cn/#indexCard这一行是新加的内容。\n']
1
2
3
4
#遍历每行打印
f = open(r'C:\Users\WJF\test.txt', 'r',encoding='gbk')
for line in f.readlines():
print(line)
1
2
3
4
5
6
7
8
9
10
11
12
13
'''
DataScience

专注数据科学领域

分享python、Java、大数据学习干货;职场面经、求职指南等

不定期组织免费学习计划

欢迎加入我们~~~

DataScience 官方博客:https://www.a2data.cn/#indexCard这一行是新加的内容。
'''

小总结

其实关于文件的打开有很多种模式,这里我们用一个表格总结一下

模式 概述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

以上为文件打开的所有方式,但实际应用中常用的就其中几种,大家不必硬记,根据自己的需求记住几个常用的就好。

小作业:

  1. 语文老师将古诗存在poem.txt文档里,一句一行。他需要修改特定诗句为空白让学生默写。请使用如下诗歌为例,帮助老师实现功能:

    锦瑟无端五十弦,
    一弦一柱思华年。
    庄生晓梦迷蝴蝶,
    望帝春心托杜鹃。
    沧海月明珠有泪,
    蓝田日暖玉生烟。
    此情可待成追忆,
    只是当时已惘然。

评论