全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

文件操作专题

专题说明

本专题系统讲解Python文件操作的核心知识,包括open()函数的使用、文件打开模式(读/写/追加/二进制)、with上下文管理器、文件路径操作、CSV文件处理与JSON数据格式解析。

学习目标

  1. 掌握open()函数的参数与文件打开模式
  2. 熟练使用read()、readline()、readlines()和write()方法
  3. 理解with语句在文件操作中的优势
  4. 掌握CSV文件的读写与JSON数据的序列化/反序列化
  5. 了解常用文件路径操作方法

学习内容

  • 文件打开:open()函数、r/w/a/b/t模式、encoding参数
  • 文件读取:read()、readline()、readlines()、逐行迭代
  • 文件写入:write()、writelines()、覆盖写入与追加写入
  • 上下文管理:with语句自动关闭文件
  • CSV处理:csv模块的reader/writer、DictReader/DictWriter
  • JSON处理:json模块的loads/dumps、load/dump

学习建议

  1. 始终使用with语句进行文件操作,确保文件被正确关闭
  2. 读取大文件时使用逐行迭代,避免一次性加载全部内容到内存
  3. 文件操作要注意编码问题,建议使用utf-8编码
  4. CSV适合表格数据,JSON适合结构化数据,根据场景选择

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

csv模块可以读取和写入CSV格式文件,CSV文件以逗号分隔各列数据。

A

B

2

json模块可以将Python对象序列化为JSON字符串,也可以将JSON字符串反序列化为Python对象。

A

B

3

pathlib模块提供了面向对象的方式来处理文件路径,比os.path更现代和直观。

A

B

4

文件指针指示当前读写位置,打开文件后指针默认在文件开头(位置0)。

A

B

单选题
5

要将文件指针移动到文件开头,应该使用哪个方法?

A

f.reset()

B

f.seek(0)

C

f.start()

D

f.move(0)

6

使用pathlib拼接路径Path('/home') / 'user' / 'doc.txt'的结果是什么?

A

字符串 '/home/user/doc.txt'

B

Path对象 '/home/user/doc.txt'

C

报错

D

列表 ['/home', 'user', 'doc.txt']

7

将Python字典转换为JSON字符串,应该使用哪个函数?

A

json.dump()

B

json.dumps()

C

json.load()

D

json.loads()

8

执行json.loads('{"a": 1, "b": 2}')的结果是什么类型?

A

字符串

B

列表

C

字典

D

元组

9

使用csv.DictReader读取CSV文件时,每行数据以什么形式返回?

A

列表

B

字典(以第一行作为键)

C

元组

D

字典(以列号作为键)

10

读取CSV文件时,csv.reader()返回的每一行是什么类型?

A

字典

B

列表

C

元组

D

字符串

11

Path对象p = Path('/tmp/test.txt'),判断文件是否存在的方法是?

A

p.exist()

B

p.exists()

C

p.isfile()

B

p.check()

12

打开文件读取内容后,f.tell()返回什么?

A

文件总大小

B

当前指针位置

C

已读取的行数

D

文件是否到达末尾

多选题
13

关于文件路径处理,以下说法正确的是?

A

pathlib使用Path对象处理路径

B

pathlib的/运算符可以拼接路径

C

Path.exists()检查路径是否存在

D

Path.is_file()检查是否是文件

E

os.path.join()拼接路径返回字符串

F

Path.cwd()返回当前工作目录

14

关于json模块,以下说法正确的是?

A

json.dumps()将Python对象转为JSON字符串

B

json.loads()将JSON字符串转为Python对象

C

json.dump()将Python对象写入JSON文件

D

json.load()从JSON文件读取Python对象

E

ensure_ascii=False可以让中文正常显示

F

indent参数可以设置JSON格式缩进

15

关于文件指针操作,以下说法正确的是?

A

seek(0)将指针移到文件开头

B

tell()返回当前指针位置

C

读取文件后指针自动向后移动

D

seek(0, 2)将指针移到文件末尾

E

文本模式下可以从任意位置seek

F

二进制模式下seek更灵活

16

关于csv模块,以下说法正确的是?

A

csv.reader()读取CSV文件,每行返回列表

B

csv.writer()写入CSV文件,接受列表

C

csv.DictReader()每行返回字典

D

csv.DictWriter()写入字典数据

E

Windows写入CSV需要newline=''

F

CSV文件只能用逗号分隔

填空题
17

json模块有四个核心函数。将Python对象转为JSON字符串使用____________(),将JSON字符串转为Python对象使用____________()。写入JSON文件使用json.____________(obj, file),读取JSON文件使用json.load(file)。函数名带s结尾表示处理字符串,不带s表示处理文件。中文显示需要设置ensure_ascii=False,格式化输出使用indent参数。

18

csv模块读取CSV文件:使用____________(file)返回列表形式的每行数据,使用____________(file)返回字典形式(键来自____________行)。写入CSV文件:使用csv.writer(file)写入列表数据,使用csv.DictWriter(file, fieldnames=['列名'])写入字典数据。Windows系统写入CSV需要设置newline=''防止多余空行。csv.delimiter参数可以指定分隔符,默认是逗号。

19

文件指针操作中,____________(0)将指针移到文件开头,____________()返回当前指针位置。seek方法第二个参数whence可以是0(文件____________)、1(当前位置)或2(末尾)。获取文件大小需要先seek(0, 2)移到末尾,再调用tell()获取位置。文本模式下只能从开头seek,二进制模式下可以任意位置seek。

20

pathlib模块使用____________对象处理路径,路径拼接使用____________运算符。Path对象的____________()方法检查路径是否存在,is_file()检查是否是文件,is_dir()检查是否是目录。获取文件名用name属性,获取扩展名用suffix属性,获取不含扩展名的文件名用stem属性,获取父目录用parent属性。当前目录用Path.cwd()获取。

参考答案
1.正确 2.正确 3.正确 4.正确 5.B 6.B 7.B 8.C 9.B 10.B 11.B 12.B 13.A;B;C;D;E;F 14.A;B;C;D;E;F 15.A;B;C;D;F 16.A;B;C;D;E 17.json.dumps;json.loads;dump 18.csv.reader;csv.DictReader;标题 19.seek;tell;开头 20.Path;/;exists
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 数据结构基础专题
下一个专题 → 架构与设计专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码