Python文件对象和操作

【Python】文件对象 在 Python 中,文件对象是对文件进行读写操作的接口。通过文件对象,可以方便地对文件进行打开、读取、写入和关闭等操作。Python 提供了内置的open()函数来创建文件对象。 阅读详情

Python的文件处理和相关输入输出能力。介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块。

 

一,内建函数open()和file()

 

语法:file_object = open(fiel_name, access_mode=’r’, buffering=-1)

 

File_name是要打开的文件名字的字符串,可以使相对路径或者绝对路径,access_mode可选参数,表示文件打开的模式,’r’,’w’,’a’ 分别代表读取,写入和追加。还有个’U’模式,代表通用换行符支持。

 

‘r’或者’U’模式打开的文件必须是已经存在的,使用’w’模式打开的文件若存在则首先清空,然后重新创建。以’a’模式打开的文件是为追加数据准备的,所有写入数据都将追加到文件的末尾。

另一个可选参数buffering用于指示访问文件所采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,大于1代表用给定值作为缓冲区大小,不提供参数或者负值代表使用系统默认缓冲机制。

 

File()和open()的用法相同。

1 f = open(`foo`) # 以读取模式打开 `foo`
2 f = open(`foo`,`w`) # 以写模式打开 `foo`

文件模式 `r` 表示读, `w` 表示写, `a` 表示在文件末尾添加内容。 模式字符后面允许跟一个 `b` 表示访问的是二进制数据,比如 `rb` 或 `wb`。对 UNIX(或Linux)这个`b`有没有无关紧要,对 Windows 平台则有积极意义。如果你很关心代码的可移植性,那就最好总是加上这个`b`。另外,还有一种更新模式,你只要在读写模式后增加一个`+`就可以使用这种模式,如`r+` 或 `w+`。当一个文件以更新模式打开,你就可以对这个文件进行读写操作。只要在任何读取操作之前刷新所有的输出缓冲就不会有问题。如果一个文件以 `w+` 模式打开,它的长度就度截为 0。

open() 返回一个文件对象,它支持下表中列出的方法

表 9.1. 文件方法

方法 描述
f.read([n]) 读取至多 n 字节
f.readline([n]) 读取一行中的前 n 字符。如果 n 被省略,就读取整行
f.readlines() 读取所有的行并返回一个包含所有行的列表
f.xreadlines() 返回一个迭代器,每次迭代返回文件的一个新行
f.write(s) 将字符串 s 写入文件
f.writelines(l) 将列表 l 中的所有字符串写入文件
f.close() 结束文件
f.tell() 返回当前的文件指针
f.seek(offset [, where]) 定位到一个新的文件位置
f.isatty() 如果 f 是一个交互式终端则返回 1
f.flush() 刷新输出缓冲区
f.truncate([size]) 如果文件长于 size 就截短它至 size 大小
f.fileno() 返回一个整型的文件描述符
f.readinto(buffer ,nbytes)读取 n 字节数据至一个 buffer 对象。
除非给 read() 方法一个可选的长度参数,它就会读取整个文件并将文件内容作为一个字符串返回。 readline() 返回下一行,包含换行字符。如果在调用 readline() 方法时提供一个长度参数 n,若 n 大于该行长度,则返回前 n 个字节。该行剩下的部分并不会被丢弃,在下次读取操作时会被返回。 readlines() 方法读取所有行,并将这些行作为一个 list 返回。readline() 和 readlines() 会自动处理换行在不同平台的表示。(众所周知的 `\n`,`\r`,`\r\n`) xreadlines() 返回一个迭代器,允许用迭代的方式得到文件的每一行。下面是一个使用 xreadlines()的例子:

Toggle line numbersToggle line numbers1 for line in f.xreadlines():
2 # Do something with line
3 ...
write() 方法将一个字符串写入文件。 writelines() 将一个字符串列表中的所有元素顺序写入文件。以上所有操作,字符串中均可包含二进制数据。 seek(offset[,where])用来随机存取文件的任一部分。offset是偏移量,where是可选的位置参数(默认值为0,表示文件开始位置)。 如果where的值是1,表示当前位置。如果where是2表示文件结束位置。fileno()返回一个打开文件的整型文件描述编号,有些模块在进行低层次 I/O操作时会用到。在支持单个文件超过2GB容量的机器上,seek() 和 tell() 使用长整数. 不过要允许这个特性可能需要重新配置并重新编译Python解释器。

文件对象还有下面的数据属性:

属性 描述 f.closed 表示文件状态的布尔值: 0 表示文件打开, 1 表示已关闭。 f.mode 文件打开模式 f.name open()函数打开的文件名 否则,它就是一个表示文件来源的字符串 f.softspace 这是一个布尔值 在使用 print 语句时表示在打印另一个值之前,是否要先打印一个空白符。若用类来模仿文件操作则必须提供这样一个可写的属性,并将其初始化为0。

 

二,文件内建方法:
 

1 输入

read()方法用来直接读取字节到字符串中,可以指定读取数目,默认是文件将被读取直至末尾。

readline()读取打开文件的一行,包括行结束符,也可选size参数,默认为-1,代表直至读到行结束符。

readlines()不和前两个一个返回一个字符串,它会读取所有行然后把它们作为一个字符串列表返回,有一个可选参数sizhint代表返回的最大字节大小。

2 输出

write()内建方法功能与read()和readline()相反,它把含有文本数据或二进制数据块的字符写到文件中去。

和readlines()一样,writelines()方法是针对列表的操作,它接受一个字符串列表作为参数,将它写入文件,行结束符不会自动加入,所以如果需要的话,你必须在调用writelines()前给每行结尾加上行结束符。

3 文件内移动 seek()

seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表对于某个位置偏移量,位置的默认值为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起。和C语言总的fseek()类似。

 

下面看看几个例子:

filename = raw_input('Enter file name: ')

f = open(filename,'r')

allLines = f.readlines()

f.close()

for eachLine in allLines:

print eachLine,

这个例子是读取一个文件的内容,但是是先把文件的所有内容读到allLines后,在把它一行一行的通过for循环打印出来。

下面看看用文件迭代器的方法:

filename = raw_input('Enter file name: ')

f = open(filename,'r')

for eachLine in f:

print eachLine,

f.close()

这个思路是读一行显示一行,

注意:print语句默认在输出内容末尾加一个换行符,在其后面加一个逗号就可以避免这个行为,readline()和readlines()不会对行里的空白字符做任何处理,如果我们不加逗号的话,那么显示的文本每行后都会有两个换行符,一个是附带的,另一个是print语句自动添加的。

 

下面看两个例子:

第一个:

import os

filename = raw_input('Enter file name:')

fobj = open(filename,'w')

while True:

aLine = raw_input("Enter a line('.' to quit):")

if aLine !=".":

fobj.write('%s%s' % (aLine,os.linesep))

else:

break

fobj.close()

这是往文件中写,每次写一行,如果输入’.’,则结束。关键是每一行结束我们要加一个换行符,这里用到了os模块中的linesep  ,它是用于文件中分隔行的字符串,这样就方便了我们,我们可以不必去关心当前系统所支持的换行符是什么,os模块会自动选择合适的换行符。

 

第二个例子:以可读可写模式创建一个新的文件,在向文件写入数据后,我们使用seek()方法在文件内部移动,使用tell()方法展示我们的移动过程。

 

>>> f = open('c:/Python26/code/test.txt','w+')

>>> f.tell()

0L

>>> f.write('test line 1\n')

>>> f.tell()

13L

>>> f.write('test line 2\n')

>>> f.tell()

26L

>>> f.seek(-13,1)

>>> f.tell()

13L

>>> f.readline()

'test line 2\n'

>>> f.seek(0,0)

>>> f.readline()

'test line 1\n'

>>> f.tell()

13L

>>> f.readline()

'test line 2\n'

>>> f.tell()

26L

>>> f.close()

>>>

3.3:如何在Python中创建文件? 在上面的代码中,我们首先使用open()函数创建一个名为“myfile.txt”的文件,并使用write()函数向文件中写入数据。在上面的代码中,我们首先使用open()函数创建一个名为“myfile.txt”的文件,并使用write()函数向文件中写入数据。然后,我们使用with语句将文件对象file封装在代码块中,并使用read()函数读取文件中的所有数据。在使用write()函数之前,我们需要在open()函数中使用"w"模式来打开文件,以确保在写入数据时覆盖文件中的任何现有内容。 阅读详情

相关推荐

Flutter连接蓝牙打印机打印(含中文、双排打印)

Flutter连接蓝牙打印机打印(含中文、双排打印)

Session_W的博客 700

【python学习】python的文件对象

中国史之【涂山之会】: 禹在确立王权以及建都阳翟(zhai)(今河南禹县)后,召集夏和夷的部落首领于涂山(今安徽蚌(beng)埠(bu)禹会)会盟。此番会盟是夏朝正式建立的标志,确立了夏朝的统治秩序。 -来源:全历史APP 今天讲python的文件对象。有需要的也可以直接去我的github查看全部笔记: https://github.com/JackKoLing/python_notes_with_ten_days 俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利.

learning CV 1772

墨刀原型设计工具操作使用指南及实践操作

该指南通过异常场景处理、像素级参数说明、复杂交互示例,覆盖了墨刀操作的全细节,适合从新手到资深用户的进阶学习。结合 PlantUML 思维导图的层级化展示,可快速定位具体功能的操作要点与问题解决方法,真正实现 “照指南即可操作” 的实用价值。

hy行者勇哥的博客 4942

Python灰帽编程——初识Python之函数及文件对象

函数是一种在Python中定义和重复使用的代码块。它们接受输入(称为参数),执行特定任务,并返回一个结果。函数的好处是可以将一个复杂的问题分解为更小的可管理部分。这提高了代码的可读性、可重用性和可维护性。在Python中,函数使用 `def` 关键字进行定义,后跟函数名、参数列表和冒号。函数体位于缩进块中,并在需要时返回一个值。函数可以具有零个或多个参数,并且可以根据需要返回一个值。使用 `return` 关键字可以指定函数的返回值。

来日可期的博客 1337

【正点原子STM32连载】第六十章 串口IAP实战:从Bootloader到APP的无缝升级

本文以正点原子STM32F103开发板为例,详细讲解了串口IAP(在应用编程)技术的实现原理与实战步骤。内容涵盖Bootloader与APP的分工、FLASH空间规划、核心代码解析以及Ymodem协议的应用,旨在帮助开发者掌握通过串口为嵌入式设备实现远程固件升级的关键技术,提升产品维护与迭代效率。

weixin_29161719的博客 444

【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)

在游戏发展史上,有些游戏以其简单而耐玩的特性,深深地烙印在了玩家的记忆中。《黄金矿工》就是其中之一,它曾经在4399等游戏平台上掀起了一股游戏热潮。这款游戏不仅给无数玩家带来了欢乐,还让他们体验到了挖掘金矿的刺激与乐趣。在这个项目中,我们将花费半天的时间,利用Unity引擎,重新打造这款经典小游戏。通过复刻《黄金矿工》,我们不仅是在向童年的回忆致敬,更是在挖掘游戏设计的精髓。在这个过程中,我们将学习如何实现游戏的核心玩法,设计简洁而有效的游戏机制。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2900

python-day03 文件对象、文件读写操作、函数基础

表示我们要打开文件的路径以怎样的方式打开文件文件模式操 作r以读方式打开(文件不存在则报错)w以写方式打开(文件存在则清空,不存在则创建)a以追加模式打开b以二进制模式打开文件操作对象,我们后续对文件的所有读写操作都需要通过这个对象,而不是直接操作文件中的数据。

m0_59324564的博客 279

基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 1万+

python在读写文件之前需要创建文件对象-python基本文件操作(文件输入和输出

文件输入输出中常用的文件对象方法:open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作readline: 读取一行数据包括结尾的换行符在内write: 将数据写入文件中close: 关闭文件对象;举例:读取E盘中的work.txt文件f=open('work.txt')line=f.readline()print(line)f.close()如果给readline设...

weixin_37988176的博客 711

论文阅读:arixv 2025 Poisoning Attacks on LLMs Require a Near-constant Number of Poison Samples

研究者做了目前最大规模的“投毒实验”,训练了从6亿参数到130亿参数的模型(覆盖了中小到大型LLM),用的训练数据量也是“最适合模型大小”的(按行业里的“Chinchilla法则”,模型越大,训练数据量也按比例增加)。总结下来就是:这篇论文告诉我们,给大语言模型投毒,比之前想的容易得多——不需要海量毒数据,只要几百条藏好后门的文档,就能让大模型“带毒工作”,而且平时还看不出来。——这比之前大家担心的“需要投毒数据占训练集一定比例”要可怕得多,因为对大模型来说,“固定数量”的毒数据更容易偷偷塞进去。

CSPhD-winston的博客 1080

2.4 提示词优化

我们在使用大模型的时候,同一任务使用不同表述的提示词,可能得到差异巨大的结果,因为模型的性能高度依赖输入提示词的质量。我们可以通过提示词优化来更高效地获取理想输出。

从0到1,突破自己 1007

python之装饰器,模块和文件操作和面向对象

类的里面,称之为方法,类的外面,称之为函数类名的写法:驼峰式,首字母大写,每个单词紧贴着定义一个类age = 18print("耶耶")定义一个对象qiye = Teacher() # 实例化对象 -- 通过类实例化生成了一个对象 -- qiyexiaoming = Teacher() # 生成了另外一个对象 -- xiaoming获取对象中的属性print(f"""----->{qiye.name}的自我介绍

m0_63475519的博客 645

Matlab之App Designer 如何进行三维图形绘制教程

基于Matlab中的App Designer设计可视化界面并进行数据导入及3D绘图,可以直观的在可视化界面上展示分析结果,方便用户进行图形的操作。本文采用案例讲解的方式,详细介绍了如何采用Matlab App Designer建立数据3D绘图的GUI可视化界面的方法和详细的过程步骤,并介绍了导入数据进行计算时需要注意的相关事项,同时提供了详细的代码,以便读者进行学习和操作。

m0_59012156的博客 2065

Python入门【二进制文件的读取和写入、文件对象的常用属性和方法、文件任意位置操作 、使用pickle序列化、CSV文件的操作、os和os.path模块、os模块-文件和目录操作】(二十)

Python入门【二进制文件的读取和写入、文件对象的常用属性和方法、文件任意位置操作、使用pickle序列化、CSV文件的操作、os和os.path模块、os模块-文件和目录操作】(二十)

abc19991119的博客 2514

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python学习笔记:python类和对象,文件操作,网络编程

介绍了python的高级编程,网络编程,多线程多进程,文件操作,串口编程等

m0_70983574的博客 600

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

7.3 python类和对象、继承、多态以及异常和文件操作

类和对象以及继承多态 面向对象特点:封装、继承、多态 1.类和对象概念 与java一致 2.类定义与访问 class 类名([父类列表]): """类注释""" 类体  一个类由5部分构成:class关键字。类名称,继承父类列表,类的文档字符串和类体组成。类体主要由属性和方法构成(python支持函数重载但不支持方法重载) 方法:类对某一类事物的抽象,如果需要给一个类添加功能,需要在类中定义方法来实现,方法就是类中定义的函数,如鱼类都具有有用的功能 class fish(object): d

weixin_44116098的博客 261

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python 学习笔记——文件对象和操作

Python的文件处理和相关输入输出能力。介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块。 一,内建函数open()和file()           语法:file_object = open(fiel_name, access_mode=’r’, buffering=-1)   File_name是要打开的文...

anvt77205的博客 104

Python语言进阶之面向对象编程(类和对象、魔术方法)、文件操作(4-3)

面向过程是一种以过程为中心的编程思想,它先是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,在使用时依次调用,是一种基础的顺序思维方式。面向过程的开发方式是对计算机底层结构的一种抽象,它将程序分为数据和操纵数据的操作两部分,其核心问题是数据结构和算法的开发和优化。常见支持面向过程的编程语言有C、COBOL等。 面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。面向对象方法把所有事物都当作独立的对象,处理问题的过程中所思考的关

桂林算啦粉的博客 580

Python3_输入和输出的相关基础知识2(Python的文件操作、文件对象的方法、pickle 模块)

读取键盘输入 Python 提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。 #测试input获取键盘输入 #实例1 str = input('请输入:') print('您输入的字符串是:' + str) 这会产生如下的对应着输入的结果: 读和写文件 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode) ilename:包含了你要访问的文件名称的字符串值。 mode:决定了打开文件的模式:只读,写入,追加等。所有

一个的博客 654

Python基础35 文件对象的常用方法、读操作和写操作、with语句、上下文管理器

Python基础35 文件对象的常用方法、读操作和写操作、with语句、上下文管理器

Wantfly9951的博客 766

Python学习笔记——文件对象和操作(2)

三 文件内建属性 简单介绍一下: file.closed True表示文件已经关闭,否则为False  例如 if file.closed= =True: file.encoding   文件所用的编码 file.mode 文件打开时的访问模式 file.name  文件名 等等   四 标准文件 执行程序可以访问三个标准文件,标准输入,标准输出,标准错误,分别为stdinstd

xiaodanpeng的专栏 606

Python自学28——第十四章(1):文件的编码格式,文件的读写操作和原理,常用文件的打开模式,文件对象的常用方法

文件的编码格式,文件的读写操作和原理,常用文件的打开模式,文件对象的常用方法

weixin_48304306的博客 465

python 对象序列化 pickling_python操作文件——序列化pickling和JSON

当我们在内存中定义一个dict的时候,我们是可以随时修改变量的内容的:>>> d=dict(name='wc',age=28)>>>d{'name': 'wc', 'age': 28}我们可以随时修改name和age的值。但是当我们重新运行程序的时候,name、age的初始化值还是wc和28,实际情况下我们需要保存该dict的最后的值。我们把变量从内存中变成可存...

weixin_39797686的博客 241

Python学习笔记——文件对象和操作(1)

Python的文件处理和相关输入输出能力。介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块。   一,内建函数open()和file()   语法:file_object = open(fiel_name,access_mode=’r’, buffering=-1)   File_name是要打开的文件名字的字符串,可以使相

xiaodanpeng的专栏 731
上一篇: vi替换命令
下一篇: C/C++正则表达式应用
nuoline
博客等级 码龄18年 345粉丝 247原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值