python 在操作文件 I/O 的时候,有两个非常重要的方面:一个是 open() 函数的掌握、另一个是 File 文件对象的相关函数的掌握。相比其他面向对象语言的文件流的用法是比较简便的,并且提供很多的文件打开模式算是比较优秀了。
1、全局函数 open()
open() 函数的可选参数还是比较多的,一般在读取文件时只使用文件路径、文件打开模式就可以完成大多数的使用场景。使用 open() 函数打开文件后返回的就是一个 File 文件对象,然后使用 File 对象的内部函数实现对文件的操作,需要注意的是在完成文件对象的操作后必须对文件进行关闭。
1open('/usr/load/download/20210320/test.txt',mode='r')
open() 函数的完整的语法格式
1open('/usr/load/download/20210320/test.txt', mode='r', buffering=-1,
2encoding=None, errors=None, newline=None, closefd=True, opener=None)
open() 函数完整语法格式的各个可选参数代表什么样的含义
1file: 必填参数项 -- 文件的打开的路径(支持相对路径和绝对路径)
2mode: 可选参数项 -- 文件打开模式,默认为只读模式
3常见的 mode 参数值的格式
4# 打开模式
5'b':-- 以二进制模式打开
6't':-- 以文本模式打开(缺省模式)
7'+':-- 以读写模式打开
8'U':-- 以通用换行符模式打开
9# 操作模式
10'r':-- 以只读模式打开
11'w':-- 以只写模式打开
12'a':-- 以追加模式打开
13# 组合模式,将打开模式与操作模式进行组合使用,下列为常见组合
14'r+':-- 以文本读写模式打开
15'w+':-- 以文本读写模式打开
16'a+':-- 以文本读写模式打开
17buffering: 可选参数项 -- 设置缓冲,缓冲的设置是为了减少 IO 的使用,一般设置 0(二进制模式关闭缓冲),1(文本模式一行的缓冲),>1(初始化缓冲的大小)
18encoding: 可选参数项 -- 文件编码,一般情况使用 utf-8 编码即可
19errors: 可选参数项 -- 设置报错级别,为 None 时不设置,为 strict 时字符编码出现问题会报错,为 ignore 时忽略编码问题
20newline: 可选参数项 -- 区分换行符,只对文本模式有效,一般情况下可以取值None,'\n','\r','','\r\n' 来自定义换行
21closefd: 可选参数项 -- 传入的file参数类型,为 True 时参数类型表示文件名称,False 时为文件描述符
22opener: 可选参数项 -- 设置自定义开启器,返回值必须是一个打开的文件描述符。
2、File 文件操作对象
File -> file_obj.write(string)
1# 使用只写的模式打开文件
2file_obj = open("/usr/load/test.txt", "w")
3# 定义原始数据
4string = "Python 集中营"
5# 将字符串写入文件
6file_obj.write(string)
7# 关闭文件
8file_obj.close()
File -> file_obj.tell()
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3current_data = file_obj.tell()
4print "当前数据位置: ",current_data
File -> file_obj.read([size])
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 读取 5 个字节
6data1 = file_obj.read(5)
7# 读取整个文件
8data2 = file_obj.read(-1)
File -> file_obj.next()
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5for i in range(10):
6 # 读取下一行
7 data_line = file_obj.next()
8 print "第 %d 行 - %s" % (i, data_line)
9# 关闭文件
10file_obj.close()
File -> file_obj.readline([size])
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 读取一行的 10 个字节
6data_line1 = file_obj.readline(10)
7# 读取一行
8data_line2 = file_obj.readline()
File -> file_obj.readlines([size])
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# readlines() 函数读取所有行
6# 遍历每行
7for data_line in file_obj.readlines():
8 # 去除首尾多余的空格
9 data_line = data_line.strip()
10
11# 关闭文件
12file_obj.close()
File -> file_obj.flush()
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 刷新缓冲区
6file_obj.flush()
7# 关闭文件
8file_obj.close()
File -> file_obj.close()
1# 使用读写的模式打开文件
2file_obj = open("/usr/load/test.txt", "rw+")
3# 获取文件名称
4print "文件名为: ", file_obj.name
5# 关闭文件
6file_obj.close()
更多精彩前往微信公众号【Python 集中营】,专注后端编程实战,原创文章每天更新!
相关推荐
python2 NeteaseNxsUnpack / DecodeNetNxs.py INPUT_FILE OUTPUT_FILE Npk文件 python2 NeteaseNpkUnpack / NeteaseNpkUnpack.py INPUT_FILE(.npk)OUTPUT_DIR PycFile cd NeteasePycObject g ++ netpyc -o netpyc ...
18. **GFS文件存储**:Google File System (GFS)将文件切分成64MB的块进行存储。 19. **k近邻法(KNN)**:KNN的分类效果并不一定随着k值增大而变好,过大可能导致过拟合。 20. **拍档系统**:拍档系统不能直接将...
Java项目课程设计,包含源码+数据库+论文
Java项目课程设计,包含源码+数据库+论文
# 基于Raspberry Pi Pico的智能自主两轮机器人小车系统 ## 项目简介 本项目围绕智能自主两轮机器人小车展开,借助Raspberry Pi Pico微控制器、多种传感器以及PID(比例 积分 微分)控制器,达成高效导航、障碍物规避和条形码识别等功能。目标是打造一款能在预设轨道行驶、巧妙避开障碍物并通过红外传感器识别条形码的机器人小车。 ## 项目的主要特性和功能 1. 基本运动控制借助电机传感器,实现小车在上下左右等多个方向的简单移动。 2. 速度精准调控运用PID控制器和编码器,对小车速度进行有效调节与控制。 3. 导航与路径规划可将迷宫转化为可打印地图,并依据生成的地图找出最短路径。 4. 障碍物检测利用超声波传感器测定与障碍物的最小和最大距离,进而避开障碍物。 5. 特殊信息识别通过红外传感器实现线路跟踪和条形码检测。 6. 方位获取借助磁传感器获取罗盘方位值。 7. 数据优化采用滤波技术提升传感器数据的准确性和精度。
Java项目web的课程设计,包含源码+数据库+论文
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的
# 基于Go语言和Vue3的New Bing演示站点 ## 项目简介 本项目是基于Go语言和Vue3开发的微软New Bing演示站点,能让用户拥有和New Bing一致的UI体验,支持ChatGPT提示词,在国内也能使用,基本兼容微软Bing AI的所有功能,用户无需登录即可进行畅聊。 ## 项目的主要特性和功能 1. 服务器选择灵活Bing官方聊天服务器不可用时,可通过ModHeader添加请求头或本地部署中转服务聊天服务器可在设置中切换,默认的Cloudflare Workers有请求数限制,推荐自行部署。 2. 国内可用部署服务器需直连www.bing.com不重定向CN,支持配置socks连接。 3. 支持提示词库支持现有开源ChatGPT提示词库。 4. 高级功能体验需要画图等高级功能时,登录微软账号设置用户Cookie即可体验。 5. 问题解决方式多样遇到问题可依次尝试点击左下角按钮、刷新页面、清理浏览器缓存及Cookie。
# 基于React框架的水印插件系统 ## 项目简介 这是一个基于React框架的水印插件系统,旨在提供一种方便、灵活的方式来为你的React应用添加水印功能。通过该插件,你可以轻松地为网页内容添加自定义的水印,包括主文本、副文本以及一系列可配置的水印样式。 ## 项目的主要特性和功能 1. 灵活的水印文本配置支持主文本和副文本,满足多种需求。 2. 丰富的水印样式选项提供多种样式配置,如颜色、旋转角度、字体大小、字体粗细、字体族等,以满足不同场景下的水印需求。 3. 易于集成通过npm安装后,可以方便地引入并使用水印组件。 4. 适配性强支持React的编译环境,确保在各种环境下都能正常工作。 ## 安装使用步骤 1. 安装插件 首先,通过npm安装该水印插件 bash npm install tntdreactwatermark save 2. 引入并使用插件
# 基于React18和Vite框架的乐哥后台管理系统 ## 项目简介 本项目是一个基于React18和Vite框架的后台管理系统,主要使用了Ant Design组件库,同时配置了React路由和Vite插件进行样式按需加载。项目采用TypeScript语言进行开发,旨在提供一个简洁、高效且可扩展的后台管理系统解决方案。 ## 项目的主要特性和功能 React18支持项目使用了React 18版本,并使用了新的createRoot API替代了ReactDOM.render,确保项目能够充分利用React 18的新特性。 Vite框架使用Vite作为项目构建工具,提供了快速的开发环境和优化的构建流程。 Ant Design组件库项目中使用了Ant Design组件库,提供了丰富的UI组件和工具,如按钮、表格、布局等。 React路由配置了React路由,实现了页面之间的导航和路由管理。
Java项目课程设计,包含源码+数据库+论文
# 基于Python的机器学习实战项目 ## 项目简介 这是一个基于Python的机器学习实战项目,涵盖了多种机器学习算法的实现,包括KNN、决策树、朴素贝叶斯、逻辑回归、SVM、集成学习(如AdaBoost)以及线性回归和局部加权线性回归等。每个算法都有对应的Python代码实现,并提供了数据加载、模型训练和预测等基本功能。项目目标是让学习者通过实际代码练习,深入理解并掌握各种机器学习算法的原理和应用。 ## 项目的主要特性和功能 1. KNN(K最近邻)实现KNN分类算法,可用于分类任务,如文本分类、图像识别等。 2. 决策树实现基于ID3算法的决策树分类器,可用于处理分类问题。 3. 朴素贝叶斯实现朴素贝叶斯分类器,用于文本分类任务。 4. 逻辑回归实现逻辑回归模型,用于二分类问题。 5. SVM(支持向量机)实现SVM分类器,可用于多分类问题。 6. 集成学习实现AdaBoost算法,通过组合多个弱学习器创建一个强学习器。
# 基于C++框架的语音转文本系统 ## 项目简介 本项目是一个高性能的语音转文本系统,基于OpenAI的Whisper自动语音识别(ASR)模型实现。项目采用纯CC++实现,无外部依赖,支持多种平台,包括Mac OS、iOS、Android、Linux、Windows等。系统能够在CPU上运行,具有低内存使用和高性能的特点。 ## 项目的主要特性和功能 1. 高性能推理基于OpenAI的Whisper模型,支持多种平台,包括Mac OS、iOS、Android、Linux、Windows等。 2. 无依赖实现纯CC++实现,无外部依赖,支持Apple Silicon的优化(Arm Neon和Accelerate框架)。 3. 低内存使用采用Flash Attention和Flash Forward技术,减少内存占用。
内容概要:本文介绍了一种名为LensDroid的新颖技术,它利用深度学习(DL)和软件可视化相结合的方法来检测Android恶意软件。LensDroid通过从三个互补视角——行为敏感度、操作环境和支持环境——对应用程序进行可视化,从而自动捕捉并聚合不直接关联的高级特征,揭示隐藏的恶意行为。具体而言,LensDroid采用抽象API调用图、指令序列矩阵以及二进制转换图像三种方式分别表示这三个视角,并设计了一个融合模型将不同视角提取到的特征向量逐步从局部到全局地融合起来。实验结果显示,在超过51K个真实世界应用的数据集上,LensDroid的表现优于五种基线方法,特别是在应对零日攻击方面表现尤为突出。 适合人群:安全研究人员、移动应用开发者、网络安全专家。 使用场景及目标:适用于需要高效准确识别新型和已知Android恶意程序的安全评估工具或平台;旨在提高现有恶意软件检测系统的性能,特别是对于复杂多变的现代恶意软件。 其他说明:文中还讨论了LensDroid的设计细节和技术挑战,如视图选择、特征提取参数调整等,并对未来改进方向进行了展望。此外,作者们强调了跨学科合作的重要性,指出可以通过引
村级行政界线数据 数据格式:矢量格式(.shp) 时间范围:每个省份年份不同,基本为2020年到2022年 数据坐标:CGCS2000/WGS1984 备注:由于村级行政界线小部分每年会有调整,所以该数据有部分地区不是最新界线。
ESP32_BOM_土壤湿度套件物料清单(2025026)V1.1.rar
Java项目课程设计,包含源码+数据库+论文
2025年陕西省(公交路线及站点shp矢量数据,WGS1984).zip
2025年海南省(公交路线及站点shp矢量数据,WGS1984).zip
simulink_introduction-compressed.pdf 牛津大学课件