广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python之文件对象
  • 445
分享到

python之文件对象

对象文件python 2023-01-31 03:01:27 445人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

防伪码忘情公子著文件对象是用来访问文件系统接口所对应的数据的文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构—即在磁盘上组织文件的方法计算机文件或称文件、电脑档案、档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计

防伪码忘情公子著


文件对象是用来访问文件系统接口所对应的数据的

文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构—即在磁盘上组织文件的方法

计算机文件或称文件、电脑档案、档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计算机文件系统管理之下

概括来讲

        文件是计算机中由OS管理的具有名字的存储区域

        在linux系统上文件被看做是字节序列

wKiom1hU9w-jYLj5AAC2K7fvLZ8039.png


要想把数据存储到文件中有一个前提那就是必须序列化,非序列化的数据是不能简单的存储在文件系统中的文件中的


对于python来说文件对象不仅可以用来访问普通的磁盘文件此外在Linux中的一些特殊文件比如套接字文件、命名管道等等也都可以通过文件的对象接口来进行访问。


对于Python而言要想实现创建文件对象就要使用python的内置函数open()来完成。

python的内置函数open()用于打开文件和创建文件对象其使用方法如下

open(name [,mode [,bufsize]])

open函数可以接收三个参数文件名、模式和缓冲区参数。open函数返回的是一个文件对象

 mode指定文件的打开模式

     简单模式

       r只读

       w写入

       a附加

     在模式后使用“+”表示同时支持输入、输出操作

       r+

       w+

       a+

     在模式后附加“b”表示以二进制方式打开

       如rb、wb+

     当以可写模式打开文件时若文件不存在则会创建该文件

     当以只读模式打开文件时若文件不存在则会发出异常

  bufsize定义输出缓存

   0表示无输出缓存禁用缓冲

   1表示使用缓冲只缓冲一行数据

   负数表示使用系统默认设置使用系统默认缓冲

   正数表示使用近似指定大小的缓冲指定缓冲空间大小


文件对象的方法

file.next()方法 以迭代方式获取文件的所有行

In [1]: f = open('/etc/passwd')

In [2]: f.next()
Out[2]: '##\n'

In [3]: f.next()
Out[3]: '# User Database\n'

In [4]: f.next()
Out[4]: '# \n'

In [5]: f.next()
Out[5]: '# Note that this file is consulted directly only when the system is running\n'

In [6]: f.next()
Out[6]: '# in single-user mode.  At other times this infORMation is provided by\n'

In [7]: f.next()
Out[7]: '# Open Directory.\n'

In [8]: f.next()
Out[8]: '#\n'

In [9]: f.next()
Out[9]: '# See the opendirectoryd(8) man page for additional information about\n'

In [10]: f.next()
Out[10]: '# Open Directory.\n'

In [11]: f.next()
Out[11]: '##\n'

In [12]: f.next()
Out[12]: 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false\n'

In [13]: f.next()
Out[13]: 'root:*:0:0:System Administrator:/var/root:/bin/sh\n'

In [14]: f.next()
Out[14]: 'daemon:*:1:1:System Services:/var/root:/usr/bin/false\n'

In [15]: f.next()
Out[15]: '_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico\n'


file.close()方法关闭文件被关闭的文件无法再从中读取数据

In [24]: f.close()

In [25]: f.next()
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-c3e65e5362fb> in <module>()
----> 1 f.next()

ValueError: I/O operation on closed file


file.fileno()方法返回文件对象的文件描述符

In [27]: f = open('/etc/passwd')

In [28]: f.fileno()
Out[28]: 10


file.readline()方法执行一次返回一行

In [30]: f = open('/etc/passwd')

In [31]: f.readline()
Out[31]: '##\n'

In [32]: f.readline()
Out[32]: '# User Database\n'

In [33]: f.readline()
Out[33]: '# \n'


file.readlines()方法以列表模式返回文件所有行

In [34]: f = open('/etc/passwd')

In [35]: f.readlines()
Out[35]:
['##\n',
 '# User Database\n',
 '# \n',
 '# Note that this file is consulted directly only when the system is running\n',
 '# in single-user mode.  At other times this information is provided by\n',
 '# Open Directory.\n',
 '#\n',
 '# See the opendirectoryd(8) man page for additional information about\n',
 '# Open Directory.\n',
 '##\n',
 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false\n',
 'root:*:0:0:System Administrator:/var/root:/bin/sh\n',
 'daemon:*:1:1:System Services:/var/root:/usr/bin/false\n',
 '_uucp:*:4:4:Unix to Unix Copy Protocol:/var/spool/uucp:/usr/sbin/uucico\n',
 '_taskgated:*:13:13:Task Gate Daemon:/var/empty:/usr/bin/false\n',
 '_networkd:*:24:24:Network Services:/var/networkd:/usr/bin/false\n',
 '_installassistant:*:25:25:Install Assistant:/var/empty:/usr/bin/false\n',
 '_lp:*:26:26:Printing Services:/var/spool/cups:/usr/bin/false\n',
 '_postfix:*:27:27:Postfix Mail Server:/var/spool/postfix:/usr/bin/false\n',
 '_scsd:*:31:31:Service Configuration Service:/var/empty:/usr/bin/false\n',
 '_ces:*:32:32:Certificate Enrollment Service:/var/empty:/usr/bin/false\n',
 '_mcxalr:*:54:54:MCX AppLaunch:/var/empty:/usr/bin/false\n',
 '_appleevents:*:55:55:AppleEvents Daemon:/var/empty:/usr/bin/false\n',
 '_geod:*:56:56:Geo Services Daemon:/var/db/geod:/usr/bin/false\n',
 '_serialnumberd:*:58:58:Serial Number Daemon:/var/empty:/usr/bin/false\n',
 '_devdocs:*:59:59:Developer Documentation:/var/empty:/usr/bin/false\n',
 '_sandbox:*:60:60:Seatbelt:/var/empty:/usr/bin/false\n',
 '_mdnsresponder:*:65:65:mDNSResponder:/var/empty:/usr/bin/false\n',
 '_ard:*:67:67:Apple Remote Desktop:/var/empty:/usr/bin/false\n',
 '_www:*:70:70:World Wide WEB Server:/Library/WebServer:/usr/bin/false\n',
 '_eppc:*:71:71:Apple Events User:/var/empty:/usr/bin/false\n',
 '_cvs:*:72:72:CVS Server:/var/empty:/usr/bin/false\n',
 '_svn:*:73:73:SVN Server:/var/empty:/usr/bin/false\n',
 '_Mysql:*:74:74:mysql Server:/var/empty:/usr/bin/false\n',
 '_sshd:*:75:75:sshd Privilege separation:/var/empty:/usr/bin/false\n',
 '_Qtss:*:76:76:QuickTime Streaming Server:/var/empty:/usr/bin/false\n',
 '_cyrus:*:77:6:Cyrus Administrator:/var/imap:/usr/bin/false\n',
 '_mailman:*:78:78:Mailman List Server:/var/empty:/usr/bin/false\n',
 '_appserver:*:79:79:Application Server:/var/empty:/usr/bin/false\n',
 '_clamav:*:82:82:ClamAV Daemon:/var/virusmails:/usr/bin/false\n',
 '_amavisd:*:83:83:AMaViS Daemon:/var/virusmails:/usr/bin/false\n',
 '_jabber:*:84:84:Jabber XMPP Server:/var/empty:/usr/bin/false\n',
 '_appowner:*:87:87:Application Owner:/var/empty:/usr/bin/false\n',
 '_windowserver:*:88:88:WindowServer:/var/empty:/usr/bin/false\n',
 '_spotlight:*:89:89:Spotlight:/var/empty:/usr/bin/false\n',
 '_tokend:*:91:91:Token Daemon:/var/empty:/usr/bin/false\n',
 '_securityagent:*:92:92:SecurityAgent:/var/db/securityagent:/usr/bin/false\n',
 '_calendar:*:93:93:Calendar:/var/empty:/usr/bin/false\n',
 '_teamsserver:*:94:94:TeamsServer:/var/teamsserver:/usr/bin/false\n',
 '_update_sharing:*:95:-2:Update Sharing:/var/empty:/usr/bin/false\n',
 '_installer:*:96:-2:Installer:/var/empty:/usr/bin/false\n',
 '_atsserver:*:97:97:ATS Server:/var/empty:/usr/bin/false\n',
 '_ftp:*:98:-2:FTP Daemon:/var/empty:/usr/bin/false\n',
 '_unknown:*:99:99:Unknown User:/var/empty:/usr/bin/false\n',
 '_softwareupdate:*:200:200:Software Update Service:/var/empty:/usr/bin/false\n',
 '_coreaudiod:*:202:202:Core Audio Daemon:/var/empty:/usr/bin/false\n',
 '_screensaver:*:203:203:Screensaver:/var/empty:/usr/bin/false\n',
 '_locationd:*:205:205:Location Daemon:/var/db/locationd:/usr/bin/false\n',
 '_trustevaluationagent:*:208:208:Trust Evaluation Agent:/var/empty:/usr/bin/false\n',
 '_timezone:*:210:210:AutoTimeZoneDaemon:/var/empty:/usr/bin/false\n',
 '_lda:*:211:211:Local Delivery Agent:/var/empty:/usr/bin/false\n',
 '_cvmsroot:*:212:212:CVMS Root:/var/empty:/usr/bin/false\n',
 '_usbmuxd:*:213:213:iPhone OS Device Helper:/var/db/lockdown:/usr/bin/false\n',
 '_dovecot:*:214:6:Dovecot Administrator:/var/empty:/usr/bin/false\n',
 '_dpaudio:*:215:215:DP Audio:/var/empty:/usr/bin/false\n',
 '_postgres:*:216:216:postgresql Server:/var/empty:/usr/bin/false\n',
 '_krbtgt:*:217:-2:Kerberos Ticket Granting Ticket:/var/empty:/usr/bin/false\n',
 '_kadmin_admin:*:218:-2:Kerberos Admin Service:/var/empty:/usr/bin/false\n',
 '_kadmin_changepw:*:219:-2:Kerberos Change PassWord Service:/var/empty:/usr/bin/false\n',
 '_devicemgr:*:220:220:Device Management Server:/var/empty:/usr/bin/false\n',
 '_webauthserver:*:221:221:Web Auth Server:/var/empty:/usr/bin/false\n',
 '_netbiOS:*:222:222:NetBIOS:/var/empty:/usr/bin/false\n',
 '_warmd:*:224:224:Warm Daemon:/var/empty:/usr/bin/false\n',
 '_dovenull:*:227:227:Dovecot Authentication:/var/empty:/usr/bin/false\n',
 '_netstatistics:*:228:228:Network Statistics Daemon:/var/empty:/usr/bin/false\n',
 '_avbdeviced:*:229:-2:Ethernet AVB Device Daemon:/var/empty:/usr/bin/false\n',
 '_krb_krbtgt:*:230:-2:Open Directory Kerberos Ticket Granting Ticket:/var/empty:/usr/bin/false\n',
 '_krb_kadmin:*:231:-2:Open Directory Kerberos Admin Service:/var/empty:/usr/bin/false\n',
 '_krb_changepw:*:232:-2:Open Directory Kerberos Change Password Service:/var/empty:/usr/bin/false\n',
 '_krb_kerberos:*:233:-2:Open Directory Kerberos:/var/empty:/usr/bin/false\n',
 '_krb_anonymous:*:234:-2:Open Directory Kerberos Anonymous:/var/empty:/usr/bin/false\n',
 '_assetcache:*:235:235:Asset Cache Service:/var/empty:/usr/bin/false\n',
 '_coremediaiod:*:236:236:Core Media IO Daemon:/var/empty:/usr/bin/false\n',
 '_launchservicesd:*:239:239:_launchservicesd:/var/empty:/usr/bin/false\n',
 '_iconservices:*:240:240:IconServices:/var/empty:/usr/bin/false\n',
 '_distnote:*:241:241:DistNote:/var/empty:/usr/bin/false\n',
 '_nsurlsessiond:*:242:242:NSURLSession Daemon:/var/db/nsurlsessiond:/usr/bin/false\n',
 '_nsurlstoraged:*:243:243:NSURLStorage Daemon:/var/empty:/usr/bin/false\n',
 '_displaypolicyd:*:244:244:Display Policy Daemon:/var/empty:/usr/bin/false\n',
 '_astris:*:245:245:Astris Services:/var/db/astris:/usr/bin/false\n',
 '_krbfast:*:246:-2:Kerberos FAST Account:/var/empty:/usr/bin/false\n',
 '_gamecontrollerd:*:247:247:Game Controller Daemon:/var/empty:/usr/bin/false\n',
 '_mbsetupuser:*:248:248:Setup User:/var/setup:/bin/bash\n',
 '_ondemand:*:249:249:On Demand Resource Daemon:/var/db/ondemand:/usr/bin/false\n',
 '_xserverdocs:*:251:251:OS X Server Documents Service:/var/empty:/usr/bin/false\n',
 '_wwwproxy:*:252:252:WWW Proxy:/var/empty:/usr/bin/false\n']

由于readlines是一次性获取所有行若文件数据特别多将会极其占用内存资源所以一般不用readlines如果需要读取文件所有行可以使用readline进行迭代获取

当readline读取到文件末尾时再执行readline时将返回一个空字符串

In [1]: f = open('/Users/seancheng/aa.txt')

In [2]: f.readline()
Out[2]: 'fadjlfjdakf\n'

In [3]: f.readline()
Out[3]: '213242345\n'

In [4]: f.readline()
Out[4]: 'fjdagu8908fa\n'

In [5]: f.readline()
Out[5]: 'fdaf343435\n'

In [6]: f.readline()
Out[6]: 'fadgjljl;8\n'

In [7]: f.readline()
Out[7]: 'fjadljg5\n'

In [8]: f.readline()
Out[8]: ''

In [9]: f.readline()
Out[9]: ''


file.tell()方法返回当前指针在文件中的位置。以字节为单位如下表示指针在第66个字节的位置上

In [10]: f.tell()
Out[10]: 66


file.seek()方法定义文件指针的位置其使用方法如下

seek(offset[, whence])

offset指定偏移量

whence指定从哪里开始偏移

        0表示从文件头开始偏移

        1表示从当前位置开始偏移

        2表示从文件尾部开始偏移

In [13]: f.tell()
Out[13]: 66

In [14]: f.seek(0)

In [15]: f.tell()
Out[15]: 0

如上所示若不给whence的话默认的从文件头开始偏移


file.read()方法明确指定从文件中指定要读取多少个字节结果返回成一个字符串

例读取10个字节

In [16]: f.read(10)
Out[16]: 'fadjlfjdak'

In [17]: f.tell()
Out[17]: 10

当不指定字节数时将读取整个文件

In [1]: f = open('/Users/seancheng/aa.txt')

In [2]: f.tell()
Out[2]: 0

In [3]: f.read()
Out[3]: 'fadjlfjdakf\n213242345\nfjdagu8908fa\nfdaf343435\nfadgjljl;8\nfjadljg5\n'

In [4]: f.tell()
Out[4]: 66


file.name属性直接调用当前文件的全路径名称

In [6]: f.name
Out[6]: '/Users/seancheng/aa.txt'


file.write(s)写入字符串s

file.writelines(lines)写入序列lines中的所有字符串只能将字符串序列写入到文件中

file.flush()刷新缓冲区手动同步数据到磁盘中

file.truncate([size])将文件截断为最多size字节也就是说文件被截取后只剩下size字节

file.closed返回当前文件是否为关闭状态

file.encoding返回当前文件使用的编码

file.mode返回当前文件的打开模式


这就是python中的文件对象仅以此篇作为python学习成长记录。

--结束END--

本文标题: python之文件对象

本文链接: https://www.lsjlt.com/news/187428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python之文件对象
    防伪码忘情公子著文件对象是用来访问文件系统接口所对应的数据的文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构—即在磁盘上组织文件的方法计算机文件或称文件、电脑档案、档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计...
    99+
    2023-01-31
    对象 文件 python
  • Python面向对象之文件操作
    文件的概念 文件的概念和作用 计算机的文件,就是存储在某种长期存储设备上的一段数据;长期存储设备包括:U盘,硬盘,移动硬盘,光盘,等; 文件的作用:将数据长期保存,在需要的时候使用; 文件的存储方式 在计算机中,文件是以二进制的形式保...
    99+
    2023-01-31
    面向对象 操作 文件
  • Python编译结果之code对象与pyc文件详解
    目录1、Python程序执行过程2、PyCodeObject对象与.pyc文件3、pyc文件的生成总结1、Python程序执行过程 与java类似,Python将.py编译为字节码,...
    99+
    2022-11-12
  • python面相对象之类和对象
      类和对象是python面相对象中两个重要的概念,类是客观世界中事物的抽象,而对象是类实例后的变量,比如汽车模型可以造出各种各样的汽车,汽车模型就是类,汽车就是汽车模型抽象出来的实例,这里有必要还有说一下方法,函数在类中叫方法,比如汽车...
    99+
    2023-01-31
    对象 面相 python
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2022-11-12
  • Python 文件与文件对象及文件打开关闭
    目录1文件2文件对象3打开文件4关闭文件1 文件 ''' 文件存储 文件主名.扩展名 ''' Python中常有的数据文件类型有文本文件、二进制文件和CSV文件 文本文件是ASCII...
    99+
    2022-11-13
  • python如何创建文件对象
    使用python创建文件对象的方法:1.新建python项目;2.使用open()函数打开文件,并创建文件对象;具体步骤如下:首先,打开python,并新建一个python项目;python项目创建好后,在项目中使用open()函数即可打开...
    99+
    2022-10-24
  • Python面向对象之入门类和对象
    目录什么是面向对象编程?定义类,从具体代码来感受吧!多个类和对象的观察补充一下类的属性(数据部分)总结什么是面向对象编程? 我们是不是听过面向过程,拿来放在一起对比就比较好理解了。 ...
    99+
    2022-11-12
  • python小结之Ellipsis对象
    Ellipsis对象。 写作 : ‘…’ 中文解释:省略 该对象bool测试是为真 用途: 1.用来省略代码,作用类似于pass的一种替代方案,这是python的’TBD’(未确定内容)。 def fun(): … 2....
    99+
    2023-01-31
    小结 对象 python
  • python如何对文件对象使用with语句
    小编给大家分享一下python如何对文件对象使用with语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对文件对象使用with...
    99+
    2022-10-19
  • Python中的文件与文件对象有哪些属性
    今天小编给大家分享一下Python中的文件与文件对象有哪些属性的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1 文件'...
    99+
    2023-06-29
  • python基础中的文件对象详解
    目录一、python读取和写入文件内容二、文件对象的写入三、实现文件内容的拷贝四、通过文件对象cmd.exe对命令行工具进行复制总结一、python读取和写入文件内容 任务:在cmd...
    99+
    2022-11-12
  • python之路day06 面向对象
    面向对象(你就是上帝): 世间万物,皆可分类 世界万物,皆为对象 https://www.cnblogs.com/alex3714/articles/5188179.html 面向对象编程 OOP编程是利用“类”和“对象”来创建各种模型来...
    99+
    2023-01-30
    之路 面向对象 python
  • python之初始面向对象
    1. 初识面向对象   面向过程:     一切以事务的发展流程为中心.   面向对象:     一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 2. 类. 对象 ...
    99+
    2023-01-30
    面向对象 python
  • Python包装之对象处理
    目录概念一、基础1.1、toString方法1.2、格式化输出1.3、创建大对象二、高级用法2.1、通过字符串式调用函数2.2、上下文管理器概念 所有Python的对象都是扩展的P...
    99+
    2022-11-12
  • python 面向对象之变量
    类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。实例变量:定义在方法中的变量,只作用于当前实例的类。类变量的用途?大家公共的属性,节省开销看下面一段代码class Role...
    99+
    2023-01-30
    变量 面向对象 python
  • python 面向对象之多态
    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。那么,多态的...
    99+
    2023-01-30
    面向对象 多态 python
  • python之成员(面向对象)
    1. 成员   在类中你能写的所有内容都是类的成员    class Person: def __init__(self, name, gender): self.name = name # 成员...
    99+
    2023-01-30
    面向对象 成员 python
  • python面向对象之反射
    一、静态方法(staticmethod)和类方法(classmethod)类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属×××互(也就是可以使用类属性)静态方法:让类里的方法直接被类调用,就像正常调用函数一样类方法和静态方...
    99+
    2023-01-31
    反射 面向对象 python
  • python 面向对象之继承
    文章目录 前言继承的概念单继承多继承子类重写父类的同名方法和属性子类调用父类同名的方法和属性多层继承私有权限 前言 前面我们已经学习了 python 面向对象的类和对象,那么今天我将为大...
    99+
    2023-09-01
    python 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作