# 问答库

# 2.3.5 文件操作（问答库）

1. 【单选题·易】Python 文件操作主要包含哪 3 个步骤？
   A. 创建变量、运算、输出
   B. 打开文件、读/写文件、关闭文件
   C. 导入模块、定义函数、安装第三方库
   D. 编译、链接、执行
   **答案：B**
   **解析：** 课程明确：文件操作主要包含 3 个步骤：（1）打开文件；（2）读、写文件；（3）关闭文件。

2. 【单选题·易】操作文件前一定要先打开文件。打开文件使用的内置函数是（ ）
   A. `close()`
   B. `read()`
   C. `open()`
   D. `write()`
   **答案：C**
   **解析：** 课程指出：操作文件前一定要先打开文件，内置函数 `open()` 可打开文件。`read()`/`write()` 用于读写，`close()` 用于关闭。

3. 【判断题·易】文件是存储数据的基本单位，通过文件名和路径来定位和访问。
   **答案：√**
   **解析：** 课程开篇即给出这一定义，并说明文件通常由扩展名（如 `.txt`、`.jpg`、`.mp3`）标识类型。

4. 【判断题·易】`write()` 方法把字符串写入文本文件时会自动换行。
   **答案：×**
   **解析：** 课程强调：`write()` 写字符串到文件中时不会自动换行，需要在一行的末尾手动加上换行符 `\n`。

5. 【多选题·中】关于关闭文件，下列说法正确的有（ ）
   A. 文件使用过后一定要注意及时关闭
   B. 可以用文件对象的 `close()` 方法关闭
   C. 可以用 `with` 关键字确保使用后正确关闭
   D. 只要调用过 `open()`，程序结束前都不必关闭
   **答案：ABC**
   **解析：** `close()` 和 `with` 是课程给出的两种常用关闭方式。D 错误：文件使用后必须及时关闭，不能依赖“程序迟早会结束”。

6. 【多选题·中】关于 `write()`，下列说法正确的有（ ）
   A. 可以将字符串写入文本文件
   B. 要将整数和浮点数写入文本文件，需要先转换成字符串再写入
   C. 写字符串时不会自动换行
   D. 会自动在每条数据后面加上逗号
   **答案：ABC**
   **解析：** A、B、C 均为课程原文要点。D 不是 `write()` 的行为；例 2-15 用空格分隔数据，换行也需程序自己加 `\n`。

7. 【单选题·中】当前目录下 `log.txt` 的内容为“广东金融学院互联网金融与信息工程学院”。执行 `name = file.read(6)` 后，`name` 的值是（ ）
   A. `广东`
   B. `广东金融学院`
   C. `广东金融学院互联网金融与信息工程学院`
   D. `广东金融`
   **答案：B**
   **解析：** 这是例 2-13。`read(6)` 按字符数读取 6 个字符，“广东金融学院”恰好 6 个汉字，即学校名称。A 只读了 2 个字，C 是全文，D 是 4 个字。

8. 【判断题·中】`readlines()` 一次性读取文件中的所有行，返回一个列表；每个元素是对应一行的字符串，包含行尾换行符 `\n`，文件的最后一行没有换行符。
   **答案：√**
   **解析：** 这是课程对按行读的完整说明。因此用 `readlines()` 得到的行在做 `split()` 或数值转换前，通常应先 `strip()`。

9. 【简答题·中】简述 Python 文件操作的三个步骤，写出 `open()` 的格式，并说明关闭文件的两种常用方式。
   **答案：** 三个步骤：（1）打开文件；（2）读、写文件；（3）关闭文件。`open()` 的格式为 `file = open(文件名，文件模式，编码方式)`。关闭文件有两种常用方式：调用 `file.close()`；使用 `with open(文件名, 'r') as file:`，在缩进的代码块中读写，代码块结束时自动关闭。
   **解析：** 评分要点：①三个步骤与课程一致且顺序正确；②写出 `open(文件名，文件模式，编码方式)`；③同时提到 `close()` 和 `with`。只写其中一种关闭方式，给部分分。

10. 【单选题·难】运行下列程序，输出结果是什么？

```python
with open('log.txt', 'w', encoding='utf-8') as f:
    f.write('广东金融学院互联网金融与信息工程学院')

with open('log.txt', encoding='utf-8') as file:
    name = file.read(6)
    print(name)
```

    A. `广东`
    B. `广东金融学院`
    C. `广东金融学院互联网金融与信息工程学院`
    D. 因文件不存在而报错
    **答案：B**
    **解析：** 第一段 `with` 按课程例 2-13 的内容写入 `log.txt`，保证程序可直接运行。第二段以默认读模式打开（课程示例同样指定 `encoding='utf-8'`），`read(6)` 读出 6 个字符“广东金融学院”。A 字数不够；C 是 `read()` 不带参数时才会得到的全文；文件已被创建，不会走 D。

11. 【简答题·难】按教案要求，写出一段完整、可直接运行的程序：先将文本 `Hello Python` 写入当前目录下的 `in.txt`，再读取该文件，把内容全部转为大写后写入 `out.txt`，最后打印 `out.txt` 的内容。要求使用 `with` 打开文件。
    **答案：**

```python
with open('in.txt', 'w', encoding='utf-8') as f:
    f.write('Hello Python')

with open('in.txt', 'r', encoding='utf-8') as fin:
    content = fin.read()

with open('out.txt', 'w', encoding='utf-8') as fout:
    fout.write(content.upper())

with open('out.txt', 'r', encoding='utf-8') as f:
    print(f.read())
```

输出为：

```
HELLO PYTHON
```

    **解析：** 评分要点：①用 `with` 完成打开与关闭；②写入 `in.txt`、读出后再 `upper()` 写入 `out.txt`；③代码可运行且最终打印 `HELLO PYTHON`。未转大写、未关闭/未用 `with`、或读写文件名颠倒，不得满分。

12. 【单选题·难】运行下列程序，输出结果是什么？

```python
with open('demo.txt', 'w', encoding='utf-8') as f:
    f.write('Hello')
    f.write('Python')

with open('demo.txt', 'r', encoding='utf-8') as f:
    print(f.read())
```

    A. 两行，分别为 `Hello` 和 `Python`
    B. `Hello Python`
    C. `HelloPython`
    D. 因 `write()` 不能连续调用而报错
    **答案：C**
    **解析：** `write()` 不会自动换行，也不会自动插入空格，两次写入的字符串在文件中首尾相接，因此读回结果是 `HelloPython`。A 误以为每次 `write` 都会换行；B 误以为会像 `print` 那样用空格分隔；D 错误，可以多次调用 `write()`。若需要分行，应自行写入 `\n`。
