Python文件基本操作
Python文件基本操作
1、文件对象的属性
属性 | 描述 |
---|---|
file.closed | 如果文件已被关闭返回true,否则返回false。 |
file.mode | 返回被打开文件的访问模式。 |
file.name | 返回文件的名称。 |
file.newlines | 未读取到行分隔符时为 None , 只有一种行分隔符时为一个字符串, 当 文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束 符的列表 |
file.encoding | 返回文件的编码方式 |
file = open('allen.txt', 'w')
print(file.name)
print(file.mode)
print(file.encoding)
print(file.newlines)输出结果:
allen.txt
w
UTF-8
None
2、文件的打开
文件打开是通过内置函数open(),并返回一个文件对象,
file object = open(file_name [, access_mode][, buffering])
file_name: file_name变量是一个包含了你要访问的文件名称的字符串值。比如:‘hello.text’
access_mode:访问文件的模式,只读(r),写入(w),追加(a)等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:值为0,访问文件时不寄存行。值为1,访问文件时寄存行。值为大于1的正数表示指定寄存区缓冲大小。值为负数时表示寄存区缓冲大小为系统默认。
一表胜十文:
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式. |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 以读写方式打开文件,文件的指针在文件的开头 |
rb+ | 以二进制格式打开一个文件可以用于读写,文件指针放在开头。一般用于非文本文件如图片等。 |
w | 以只写方式打开文件,文件的指针在文件的开头,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件用于只写,文件的指针在文件的开头。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。r+ |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
一图胜十表:
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ✔️ |
写 | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
创建 | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ |
覆盖 | ❌ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
指针在开始 | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
指针在结尾 | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ |
3、文件输入
文件的输入和输出是相对应屏幕来说,从读取文件内容到屏幕上叫输入,将屏幕上内容写到文件内叫输出
3.1 read(size):
用于从文件读取指定的字节数,size:从文件中读取的字节数。如果size未给定或为负则读取所有
allen.txt文件内容
line1
line2
line3
file = open('allen.txt', 'r')
cont1 = file.read(2)
cont2 = file.read(10)
cont3 = file.read(15)
print('cont1=%s' % cont1)
print('cont2=%s' % cont2)
print('cont3=%s' % cont3)
file.close()结果:
cont1=licont2=ne1
line2cont3=line3
从结果上看,使用同一个file读取多次时,指针的位置从上一次读取的最后位置的下一个位置开始读取的。
3.2 readline()
用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。
fo = open("allen.txt", "r+")
print("文件名为: ", fo.name)line = fo.readline()
print("读取第一行 %s" % line)line = fo.readline(5)
print("读取的字符串为: %s" % line)
fo.close()
结果:
文件名为: allen.txt
读取第一行 line1
读取的字符串为: line2
3.3 readlines()
用于读取剩余未读取的所有行(直到结束符 EOF)并返回列表,而不是所有行,如果碰到结束符 EOF 则返回空字符串。
fo = open("allen.txt", "r+")
print("文件名为: ", fo.name)
line = fo.readlines(1)
print("读取第一行 %s" % line)
line = fo.readlines()
print("读取剩余行: %s" % line)
fo.close()
结果:
文件名为: allen.txt
读取第一行 ['line1\n']
读取剩余行: ['line2\n', 'line3']
使用for循环
例子1:
fo = open('allen.txt', 'r')
for line in fo.readlines():print(line)
fo.closed
结果:
line1line2line3
例子2:
fo = open('allen.txt', 'r')
for line in fo.readlines():print(line.strip())
fo.closed
再来看加上strip()后的结果
line1
line2
line3
从以上两个例子中可以看出,readlines()读取的时候将换行符\n也一块读取出来,需要我们自己去掉,其实read()、readline()也是一样
4、文件输出
4.1 write()
向文件中写入指定字符串。
import osfo = open('allen.txt', 'w+')
while True:line = input('input content') # input不会保留换行符,需要自己加上系统的换行符if line != '.':fo.write('%s%s' % (line, os.linesep))else:break
for line in fo.readlines():print(line)
fo.close()
如果我们分别输入3行:
line4
line5
line6
本来我们“allen.txt”文件中有以下三行:
line1
line2
line3
加上我们输入的3行应该是
line1
line2
line3
line4
line5
line6
运行结果:
line4
line5
line6
但结果并不是啊,原因是什么呢?还有为什么我们要加上os.linesep()
需要注意点:
1、以‘w/w+’模式打开的文件,如果文件存在则会覆盖,如果文件不存在则会新建。
2、write()和read()一样并不会操作换行符,需要使用os模块下os.linesep()加上换行符,否则只会在一行上写
4.2 writelines()
向文件中写入一序列的字符串。
这一序列字符串可以是由迭代对象产生的,如一个字符串列表。
换行需要制定换行符 \n。
fo = open('allen.txt', 'w+')
while True:line = input('input content') # input不会保留换行符,需要自己加上系统的换行符if line != '.':fo.writeline('%s%s' % (line, os.linesep))else:break
for line in fo.readlines():print(line)
fo.close()
我们输入3行
line1
line2
line3
打开文件查看结果:
line1
line2
line3
5、文件定位移动
5.1 tell()
例子1:
fo = open('allen.txt', 'r')
for line in fo.readline():print('本行内容:%s,指针所在的位置:%d' % (line, fo.tell()))
fo.close()
本行内容:line1,指针所在的位置:6
本行内容:line2,指针所在的位置:12
本行内容:line3,指针所在的位置:18
例子2:
fo = open('allen.txt', 'r')
for line in fo.readlines():print('本行内容:%s,指针所在的位置:%d' % (line, fo.tell()))
fo.close()
本行内容:line1,指针所在的位置:18
本行内容:line2,指针所在的位置:18
本行内容:line3,指针所在的位置:18
从例子1和2中我们可以看出readline()读取一行,指针的位置移动一行,readlines()是一下子读取到尾部。
5.2 seek()
seek(offset[, whence]) :没有返回值
offset -- 偏移量,也就是代表需要移动字节数
whence:可选,默认值为 0。表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起
fo = open("allen.txt", "r+")
line = fo.readline()
print("第一次读取的数据为:%s所在的位置为:%d " % (line, fo.tell()))
# 重新设置文件读取指针到开头
fo.seek(0, 0)
line = fo.readline()
print("第二次读取的数据为:%s所在的位置为:%d " % (line, fo.tell()))
fo.closed
第一次读取的数据为:line1所在的位置为:6
第二次读取的数据为:line1所在的位置为:6
6、文件迭代
file对象是一个可迭代的对象,可以使用for循环进行迭代
fo = open("allen.txt", "r")
for content in fo:print(content)
fo.close()
line1line2line3
内功深厚的同学,应该发现了一个问题,上边所有的例子我们再关闭文件的时候都是直接close(),试想一下,万一中间出现异常了,close就执行不了,为了保证无论是否出错都能正确地关闭文件,我们可以使用 try ... finally :
try:f = open('allen.txt', 'r')print f.read()
finally:if f:f.close()
但是每次都这么写实在太繁琐,所以,Python 引入了 with 语句来自动帮我们调用 close() 方法:
with open('allen.txt', 'r') as f:f.read()
是不是很简洁,有木有
转载于:https://www.cnblogs.com/suxianglun/p/9052718.html
Python文件基本操作相关推荐
- python文件操作的一般步骤_4.1Python文件基本操作
Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式: # -*-coding:utf-8 -*- __author__ = 'xiaojiaxin' __file_n ...
- python诗歌文件格式处理_Python文件基本操作
Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式:# -*-coding:utf-8 -*-__author__ = 'xiaojiaxin'__file_name ...
- Python标准库文件基本操作以及中文路径问题
最近在公司写RF自动化测试用例,Web测试,当时写这个的时候,有位大佬给了几个他自己写的例子和基于selenium库写的一些方法,基于Python标准库的一些方法,今天写的时候,翻看大佬写的自建库的一 ...
- python的tell和seek_4.2Python文件基本操作2:tell、seek
文件基本操作2:tell.seek 遍历方法之一:迭代器 Readlines方法缺点:readlines是把文件变成列表形式存入内存里面,如果文件很大,一下子全部变成列表,系统负担太重,所以readl ...
- 以下不是python文件读写方法的是-Python 文件I/O
Python 文件I/O 本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把 ...
- python代码大全表解释-python文件及目录操作代码汇总
前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...
- Python文件处理
Python文件处理 Python文件处理 在python中,要对一个文件进行操作,得把文件抽象为Streams流或者说file object或者叫file-like objects. 这样将文件当作 ...
- python文件操作解码_python基础3之文件操作、字符编码解码、函数介绍
内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...
- python文件处理seek_python文件操作 seek(),tell()
seek():移动文件读取指针到指定位置 tell():返回文件读取指针的位置 seek()的三种模式: (1)f.seek(p,0) 移动当文件第p个字节处,绝对位置 (2)f.seek(p,1) ...
最新文章
- Oracle EBS R12 客户表结构
- 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
- 修改sublime列编辑快捷键
- 商业银行为什么大量组织高净值小规模活动?
- k8s中流量分离以及资源隔离实战
- VMware 安装kali——linux
- vim golang 插件
- 制作CentOS 5.9自动安装光盘iso镜像
- centos php 开启mysql扩展_CentOS 7下部署php7.1和开启MySQL扩展的方法教程
- 阿里、网易、滴滴共十次前端面试碰到的问题
- MYSQL中5.7.10ROOT密码及创建用户
- Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币...
- Git linux下保存密码方法
- 九度OJ题目1000: A + B(数学)
- FeedingBottle——体积小巧的 Aircrack-ng GUI
- 【单片机原理及应用】第一篇——单片机概述
- C++获取成员变量的偏移地址
- 自由到底意味着什么(二)叔本华说的第一类自由
- 获取手机通讯录联系人(包含模糊查询,dialog自定义,也有一个自定义通知栏)
- 【转】SCI论文写作全攻略
热门文章
- php函数有哪三种,【后端开发】php函数可以分为哪三种
- access-control-allow-origin php,PHP通过Access-Control-Allow-Origin 跨域
- mysql repo_centos7下使用wget命令安装mysql
- webstorm配置环境变量_webstorm中配置nodejs环境及npm步骤详细解说
- JavaWeb-JavaMail邮件开发
- DL动态加载框架技术
- Android LayoutAnimation使用及扩展
- 浙江大学远程教育计算机应用基础第4次,浙江大学远程教育计算机应用基础5.Powerpoint知识题.docx...
- SpringBoot开发最佳实践
- javascript常用的事件