《手把手陪您学Python》33——文件的关闭

部署运行你感兴趣的模型镜像

在上一篇《手把手陪您学Python》32——文件的读取中,我们学习了读取文件的几种方法。这一篇中,我们将学习关闭文件的方法。

当我们使用open()打开并使用文件后,显式地关闭文件是非常重要而必要的一件事。如果不能很好地处理文件的关闭,可能会导致数据丢失或者受损。

其实在我们上一篇文章读取文件之后,就应该使用close()方法将文件关闭,但由于当时还没有涉及这部分内容,就没有进行文件关闭的操作,其实是一种不规范的做法。

关闭文件的方法有两种。

1、使用close()手动关闭文件

当我们对打开的文件进行完读取操作,包括后面要学习的写入操作后,就要使用close()方法将文件关闭,否则就可能导致数据或者文件的冲突或者错误。

close()方法本身很简单,但需要注意的是,在对文件进行关闭操作时,要记得是对打开的对象(file_object)进行关闭操作,而不是读取后的对象(file)进行关闭操作。

In [1]: path = 'lesson/text/contents.txt'
        file_object = open(path, encoding = 'utf-8')
        file = file_object.read()
        print(file.rstrip())
        file_object.close()
        file = file_object.read()   # 关闭文件后的再次读取
Out[1]: 《手把手陪您学Python》1——为什么要学Python?
        《手把手陪您学Python》2——Python的安装
        《手把手陪您学Python》3——PyCharm的安装和配置
        《手把手陪您学Python》4——Hello World!
        《手把手陪您学Python》5——Jupyter Notebook
        《手把手陪您学Python》6——字符串的标识
        《手把手陪您学Python》7——字符串的索引
        《手把手陪您学Python》8——字符串的切片
        《手把手陪您学Python》9——字符串的运算
        《手把手陪您学Python》10——字符串的函数
        ---------------------------------------------------------------------------
        ValueError                                Traceback (most recent call last)
        <ipython-input-5-90b7211a7dc0> in <module>
              4 print(file.rstrip()) 
              5 file_object.close()
        ----> 6 file = file_object.read()
        
        ValueError: I/O operation on closed file.

如同上面的错误一样,当文件关闭后是不能够再次读取的,错误信息也提示读取操作不能在关闭的文件上进行。

除了要记得在使用完文件后将文件关闭,还要注意文件关闭的时机。如果在我们还没有使用完文件就提前调用close()将文件关闭了,就可能导致程序的错误了。

使用with关键字就可以避免这种情况的出现。

2、使用with自动关闭文件

with关键字可以在其下面的程序全部运行完毕后自动关闭文件,既能够避免我们忘记关闭文件,也不会提早将文件关闭,是比较推荐的一种使用方法。

with关键字和for循环、if循环等关键字一样,都需要在关键字所在行的末尾增加冒号“:”,同时对with下的代码进行缩进,这样with才能够知道下面有哪些程序,什么时候运行完,之后再关闭文件。在文件关闭后的代码就不能再缩进了,而要和with保持同样的位置以进行区分。

对于使用with方法打开的文件对象的命名,可以使用as关键字,文件对象的名字就放在as之后。程序如同以下实例所示,同时也增加了再次读取的代码验证是否已经自动关闭。

由于我们已经学会了文件关闭的方法,所以后面的程序中,我们都会规范地将文件关闭,这也是我们养成良好编程习惯的开始。

下一篇我们将要学习文件写入的几种方法,和读取一样,这也是Python写入文件的基础原理,敬请关注。

 

图片

 


感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^

要阅读《手把手陪您学Python》系列文章的其他篇目,请关注公众号点击菜单选择,或点击下方链接直达。

《手把手陪您学Python》1——为什么要学Python?

《手把手陪您学Python》2——Python的安装

《手把手陪您学Python》3——PyCharm的安装和配置

《手把手陪您学Python》4——Hello World!

《手把手陪您学Python》5——Jupyter Notebook

《手把手陪您学Python》6——字符串的标识

《手把手陪您学Python》7——字符串的索引

《手把手陪您学Python》8——字符串的切片

《手把手陪您学Python》9——字符串的运算

《手把手陪您学Python》10——字符串的函数

《手把手陪您学Python》11——字符串的格式化输出

《手把手陪您学Python》12——数字

《手把手陪您学Python》13——运算

《手把手陪您学Python》14——交互式输入

《手把手陪您学Python》15——判断语句if

《手把手陪您学Python》16——循环语句while

《手把手陪您学Python》17——循环的终止

《手把手陪您学Python》18——循环语句for

《手把手陪您学Python》19——第一阶段小结

《手把手陪您学Python》20——列表

《手把手陪您学Python》21——元组

《手把手陪您学Python》22——字典

《手把手陪您学Python》23——内置序列函数

《手把手陪您学Python》24——集合

《手把手陪您学Python》25——列表推导式

《手把手陪您学Python》26——自定义函数

《手把手陪您学Python》27——自定义函数的参数

《手把手陪您学Python》28——自定义函数的返回值

《手把手陪您学Python》29——匿名函数

《手把手陪您学Python》30——模块

《手把手陪您学Python》31——文件的打开

《手把手陪您学Python》32——文件的读取

For Fans:关注“亦说Python”公众号,回复“手33”,即可免费下载本篇文章所用示例语句。

亦说Python——Python爱好者的学习分享园地

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

你看到这个错误: ``` 'nvm' 不是内部或外部命令,也不是可运行的程序或批处理文件。 ``` 说明:**nvm-windows 还没有安装** 别担心,下面我手把手教你从零开始安装 `nvm-windows`,并切换到兼容的 Node.js 版本(如 v16.19.1),让你能成功编译串口模块 `.node` 文件。 --- ## ✅ 第一步:下载并安装 nvm-windows ### 1. 打开浏览器,访问: 👉 https://github.com/coreybutler/nvm-windows/releases ### 2. 下载最新安装包(推荐) 找到以 `.exe` 结尾的文件,例如: ``` nvm-setup.exe ``` ✅ 点击下载 → `nvm-setup.exe` > ⚠️ 不要下载 zip 包!选 `setup` 那个,它是图形化安装程序! --- ## ✅ 第二步:安装 nvm-windows(管理员权限) ### 1. 右键点击你下载的 `nvm-setup.exe` → 选择 **“以管理员身份运行”** ### 2. 安装向导步骤: | 步骤 | 操作 | |------|------| | 第一步 | 点 "I agree" 同意协议 | | 第二步 | 设置 nvm 的安装路径(建议):<br>`C:\nvm`<br>✅ 记住这个路径! | | 第三步 | 设置 symlink 路径(Node.js 将装在这里):<br>`C:\nodejs`<br>✅ 推荐这样设置 | | 第四步 | 点 Install 开始安装 | 📌 安装完成后会提示 “Installation complete” --- ## ✅ 第三步:验证是否安装成功 关闭原来的 CMD 窗口,重新打开一个新的 **CMD(命令提示符)** 输入: ```cmd nvm version ``` 你应该看到输出类似: ``` 1.1.10 ``` 🎉 表示 `nvm` 安装成功! --- ## ✅ 第四步:用 nvm 安装并切换 Node.js 版本 我们现在要安装一个与 `pkg` 和 `serialport` 兼容的版本 —— 推荐使用 **Node.js 16.19.1** > 因为 `pkg` 对 node16 支持最稳定,且 serialport 有预编译支持 ### 命令如下: ```cmd nvm install 16.19.1 ``` 等待它自动下载并安装完成。 安装完后执行: ```cmd nvm use 16.19.1 ``` 你会看到提示: ``` Now using Node.js v16.19.1 (64-bit) ``` 🎯 成功切换! 验证一下: ```cmd node -v ``` 输出: ``` v16.19.1 ``` ```cmd npm -v ``` 输出: ``` 8.19.4 (或其他 8.x 版本) ``` ✅ 完美!你现在处于一个稳定、兼容、可打包的开发环境! --- ## ✅ 第五步:在你的项目中重新安装 serialport 进入你的项目目录: ```cmd cd C:\Users\admin\Desktop\nature ``` 删除旧依赖(因为之前是 v25 装的,不兼容): ```cmd rmdir /s /q node_modules del package-lock.json ``` 重新安装 serialport: ```cmd npm install serialport@10.4.0 --verbose ``` 📌 观察输出日志中是否有以下内容: ```bash > @serialport/bindings-cpp@10.7.0 install > prebuild-install || node-gyp rebuild prebuild-install WARN install No prebuilt binary found ... gyp info spawn C:\Python39\python.exe ... CXX(target) ... serialport.obj LINK(target) Release/bindings.node COPY Release\bindings.node ``` 如果看到了 `COPY bindings.node` → 说明生成成功! --- ## ✅ 第六步:检查 .node 文件是否存在 运行: ```cmd dir node_modules\@serialport\bindings-cpp\build\Release\bindings.node ``` 你应该看到类似: ``` 2025-04-05 10:20 1,234,567 bindings.node ``` 🎉 恭喜!你现在可以继续用 `pkg` 打包了! --- ## 🛠️ 补充:如果你遇到 node-gyp 编译失败? 常见原因和解决方法: ### ❌ 报错:`python` 不是命令? → 安装 Python 3.9 下载地址:https://www.python.org/downloads/release/python-3910/ 安装时勾选: - ✅ Add to PATH - ✅ Install for all users 安装完重启 CMD,再运行 `npm install` --- ### ❌ 报错:缺少 Visual Studio Build Tools? → 安装 Windows 构建工具 运行这条命令(以管理员身份打开 CMD): ```cmd npm install --global windows-build-tools ``` 它会自动下载并安装: - Python 2.7(也可忽略,我们用 3.9) - Visual Studio Build Tools > ⚠️ 第一次可能很慢,耐心等待! --- ## ✅ 总结你现在要做的事(清单版) | ✅ 步骤 | 操作 | |--------|------| | 1 | 下载 `nvm-setup.exe` 并以管理员身份安装 | | 2 | 设置 nvm 路径为 `C:\nvm`,symlink 路径为 `C:\nodejs` | | 3 | 安装完成后,在 CMD 中运行 `nvm version` 验证 | | 4 | 运行 `nvm install 16.19.1` | | 5 | 运行 `nvm use 16.19.1` | | 6 | 进入项目目录,删掉 `node_modules` 和 `package-lock.json` | | 7 | 重新运行 `npm install serialport@10.4.0 --verbose` | | 8 | 检查是否生成了 `bindings.node` 文件 | | 9 | 修改 `package.json` 添加 `assets` 路径 | | 10 | 用 `pkg` 打包:`pkg . --target node16-win-x64 --output 自然算法.exe` | --- 等你走完这 10 步,就能得到一个真正可用的、带串口功能的 `.exe` 程序! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值