【Python教程】如何实用File文件

article/2024/4/13 15:32:18

1、读写文件

open()将会返回一个file对象,基本语法:

open(filename,mode)

ilename:是一个包含了访问的文件名称的路径字符串

mode:决定了打开文件的模式:只读,写入,追加等,默认文件访问模式为只读®

不同模式打开文件的列表:

  • r:以只读的方式打开文件,文件的指针将会放在文件的开头,为默认模式
  • rb:以二进制格式打开一个文件用于只读,文件指针会在文件的开头
  • r+:打开一个文件用于读写,文件指针将会在文件的开头
  • rb+:以二进制格式打开一个文件用于读写,文件指针会放在文件的开头
  • w:打开一个文件用于写入,如果该文件已存在则将会覆盖文件,如果不存在则创建新文件
  • wb:以二进制打开一个文件用于写入
  • w+:打开一个文件用于读写
  • wb+:以二进制格式打开一个文件用于读写,如果文件存在则覆盖,如果不存在则创建新文件
  • a:打开一个文件用于追加内容,如果文件已存在,文件指针会放在文件的结尾,如果不存在则创建新文件进行写入
  • ab:以二进制格式打开一个文件用于追加写入
  • a+:打开一个文件用于读写,如果该文件已存在,文件指针会放在结尾,文件打开时会是追加模式,该文件不存在则创建新文件
  • ab+:以二进制格式打开一个文件用于追加。
>>> file = open('test1.py','w')  #以写模式打开文件
>>> file.write('hello python')
12
>>> file.flush()  #刷新文件内容
>>> file.read()   #文件不可读
Traceback (most recent call last):File "<stdin>", line 1, in <module>
io.UnsupportedOperation: not readable>>> file = open('test1.py','r')  #以只读打开文件
>>> file.readline()  #读取一行文件内容
'hello python\n'
>>> file.readline()
'hello python\n'
>>> file.readline()
''
>>> file.close()   #关闭文件

2、文件对象的方法

f.read():读取一个文件的内容

>>> f = open('/etc/passwd','r')>>> f.read(5)  #指定字节数读取   'root:'>>> f.read()   #读取文件全部内容
"root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\nuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\ngopher:x:13:30:gopher:/var/gopher:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\nvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\nabrt:x:173:173::/etc/abrt:/sbin/nologin\nhaldaemon:x:68:68:HAL daemon:/:/sbin/nologin\nntp:x:38:38::/etc/ntp:/sbin/nologin\nsaslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\ntcpdump:x:72:72::/:/sbin/nologin\nvmail:x:5000:5000::/home/vmail:/sbin/nologin\napache:x:48:48:Apache:/var/www:/sbin/nologin\nmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\nilanni:x:5001:5001::/home/ilanni:/bin/bash\ndovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\ndovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n"
>>> f.close()

f.readline():会从文件中读取单独的一行,换行符为“\n”,如果返回一个空字符串说明已经读到最后一行

>>> f = open('/etc/passwd','r')
>>> f.readline()   #读取一行的内容
'root:x:0:0:root:/root:/bin/bash\n'
>>> f.readline()
'bin:x:1:1:bin:/bin:/sbin/nologin\n'
>>> f.readline()
'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n'
>>> f.close()

f.readlines():将会以列表的形式返回该文件中包含的所有行

>>> f = open('/etc/passwd','r')
>>> f.readlines()   #读取所有行
['root:x:0:0:root:/root:/bin/bash\n', 'bin:x:1:1:bin:/bin:/sbin/nologin\n', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n', 'adm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n', 'sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n', 'uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\n', 'operator:x:11:0:operator:/root:/sbin/nologin\n', 'games:x:12:100:games:/usr/games:/sbin/nologin\n', 'gopher:x:13:30:gopher:/var/gopher:/sbin/nologin\n', 'ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\n', 'nobody:x:99:99:Nobody:/:/sbin/nologin\n', 'dbus:x:81:81:System message bus:/:/sbin/nologin\n', 'vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\n', 'abrt:x:173:173::/etc/abrt:/sbin/nologin\n', 'haldaemon:x:68:68:HAL daemon:/:/sbin/nologin\n', 'ntp:x:38:38::/etc/ntp:/sbin/nologin\n', 'saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\n', 'postfix:x:89:89::/var/spool/postfix:/sbin/nologin\n', 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n', 'tcpdump:x:72:72::/:/sbin/nologin\n', 'vmail:x:5000:5000::/home/vmail:/sbin/nologin\n', 'apache:x:48:48:Apache:/var/www:/sbin/nologin\n', 'mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n', 'ilanni:x:5001:5001::/home/ilanni:/bin/bash\n', 'dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\n', "dovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n"]
>>> f.seek(0)   #跳指针到开头
0
>>> f.readlines(9)  #指定参数读取行
['root:x:0:0:root:/root:/bin/bash\n']
>>> f.readlines(9)
['bin:x:1:1:bin:/bin:/sbin/nologin\n']
>>> f.readlines(9)
['daemon:x:2:2:daemon:/sbin:/sbin/nologin\n']
>>> f.readlines(10)
['adm:x:3:4:adm:/var/adm:/sbin/nologin\n']
>>> f.readlines(1)
['lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n']
>>> f.readlines()
['sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n', 'uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\n', 'operator:x:11:0:operator:/root:/sbin/nologin\n', 'games:x:12:100:games:/usr/games:/sbin/nologin\n', 'gopher:x:13:30:gopher:/var/gopher:/sbin/nologin\n', 'ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\n', 'nobody:x:99:99:Nobody:/:/sbin/nologin\n', 'dbus:x:81:81:System message bus:/:/sbin/nologin\n', 'vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\n', 'abrt:x:173:173::/etc/abrt:/sbin/nologin\n', 'haldaemon:x:68:68:HAL daemon:/:/sbin/nologin\n', 'ntp:x:38:38::/etc/ntp:/sbin/nologin\n', 'saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\n', 'postfix:x:89:89::/var/spool/postfix:/sbin/nologin\n', 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n', 'tcpdump:x:72:72::/:/sbin/nologin\n', 'vmail:x:5000:5000::/home/vmail:/sbin/nologin\n', 'apache:x:48:48:Apache:/var/www:/sbin/nologin\n', 'mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash\n', 'ilanni:x:5001:5001::/home/ilanni:/bin/bash\n', 'dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin\n', "dovenull:x:498:499:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin\n"]
>>>

f.write():将内容写入到文件中,然后返回写入的字符数

>>> f = open('test2.py','w')  #python学习交流群:309488165
>>> f.write('hello python')   #写入内容
12
>>> libex = 'hhhhhhhhhhhhhh'
>>> f.write(libex)   #按变量写入内容
14
>>> f.close()  #关闭文件
>>> 
[root@python day7]# cat test2.py   #内容没有换行符
hello pythonhhhhhhhhhhhhhh[root@python day7]#

f.tell():返回文件对象当前所处的位置,它是从文件开头开始算起的字节数

>>> f = open('test2.py','r')
>>> f.tell()   #指针当前位置
0
>>> f.readline()   #读取一行文件后
'hello pythonhhhhhhhhhhhhhh'
>>> f.tell()   #指针移动26字节数处
26
>>> f.close()  #关闭文件

f.seek():改变当前文件指针的位置,f.seek(offset,from_what)

from_what的值,如果是0表示开头,如果是1表示当前位置,2表示文件的结尾:

seek(x,0):从文件首行首字符开始移动x个字符

seek(x,1):从当前为往后移动x个字符

seek(-x,2):从文件的结尾往前移动x个字符

from_what值默认为0,即文件开头。

>>> f = open('test3.py','a+')
>>> f.readlines()
[]
>>> f.seek(0)  #开头
0
>>> f.readlines()
['aaa\n', 'bbb\n', 'ccc\n', 'ddd\n', 'eee\n']
>>> f.tell()
20

f.clise():关闭文件并释放系统的资源。

>>> f = open('test3.py','r')
>>> f.readlines()
['aaa\n', 'bbb\n', 'ccc\n', 'ddd\n', 'eee\n']
>>> f.close()  #关闭文件

http://www.ngui.cc/article/show-861253.html

相关文章

【栈】单调栈详情介绍及其运用

单调栈单调栈的概述&#xff08;Overview&#xff09;何时使用单调栈模拟单调递增栈单调栈的运用&#xff08;算法练习题&#xff09;模板【练习一、单调栈】739. 每日温度【练习二、单调栈哈希表】496. 下一个更大元素 I【练习三、单调栈循环数组】503. 下一个更大元素 II【练…

Linux日志分析工具之AWStats

Linux日志分析工具之AWStats &#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4c6;CSDN首发时间&#xff1a;&#x1f334;2…

力扣sql简单篇练习(十)

力扣sql简单篇练习(十) 1 过去30天的用户活动 || 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 多少天内使用Date_SUB函数,具体用法是Date_SUB(初始日期,interval 变更的天数 day) ,正数找过去负数找未来 # 变更天数多少…

Facebook 运营:如何制定内容策略

今天这篇文章的目的是帮助大家建立一个关于内容和营销策略的框架&#xff0c;以便在 Facebook上有效地执行它们。你可以用这个框架来创建内容、营销内容&#xff0c;以及营销传播的各种类型。这个框架中的每一个概念都应该在不同的主题下进行测试&#xff0c;并为你提供一个模板…

字体图标的实现原理

1.字体图标使用场景 主要用于显示网页中通用、常用的一些小图标。 精灵图是有诸多优点的&#xff0c;但是缺点很明显。 图片文件还是比较大的。图片本身放大和缩小会失真。一旦图片制作完毕想要更换非常复杂。 此时&#xff0c;有一种技术的出现很好的解决了以上问题&#xf…

11 |「哈希表」简析

前言 前言&#xff1a;刷「哈希表」高频面试题。 文章目录前言一、简介1、离散化1&#xff09;什么是离散化2&#xff09;离散化存储3&#xff09;离散化映射2、哈希表1&#xff09;什么是哈希表2&#xff09;哈希表存储3&#xff09;哈希函数4&#xff09;哈希冲突二、参考链接…

C++入门:运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a;算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符& &#xff1a;只有2个都为1&#xff0c;那么结果是1&#xff0c;否则为0&…

密钥格式梳理

文章目录各种密钥格式简介DERPyCryptodome源码参考PEMOpenSSL命令操作参考资料各种密钥格式简介 两种编码方式&#xff1a; .der&#xff1a;用ASN.1语法编码的der格式&#xff1b; .pem&#xff1a;用BASE64编码的密钥&#xff1b; # ASN.1 ------&#xff08;序列化&…

【C++】对象与类

【C】对象与类 文章目录【C】对象与类1、定义1.1 对象的定义1.2 类的定义2、对象与类的创建2.1 类的创建2.2 对象的创建3、封装3.1 访问限定符3.2 对封装的解释4、类的实例化5、类、对象大小6、this指针6.1 this指针概念6.2 this指针特点1、定义 1.1 对象的定义 现实世界对对…

Spring Security 源码解读 :基本架构及初始化

Spring Security 是基于web的安全组件&#xff0c;所以一些相关类会分散在 spring-security包和web包中。Spring Security通过自定义Servlet的Filter的方式实现&#xff0c;具体架构可参考官网Spring Security: Architecture 这里使用Spring Boot 2.7.4版本&#xff0c;对应Sp…