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文件基本操作相关推荐

  1. python文件操作的一般步骤_4.1Python文件基本操作

    Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式: # -*-coding:utf-8 -*- __author__ = 'xiaojiaxin' __file_n ...

  2. python诗歌文件格式处理_Python文件基本操作

    Python文件基本操作 文件的读写方法有六种:W,R,A,W+,A+,R+ 读模式:# -*-coding:utf-8 -*-__author__ = 'xiaojiaxin'__file_name ...

  3. Python标准库文件基本操作以及中文路径问题

    最近在公司写RF自动化测试用例,Web测试,当时写这个的时候,有位大佬给了几个他自己写的例子和基于selenium库写的一些方法,基于Python标准库的一些方法,今天写的时候,翻看大佬写的自建库的一 ...

  4. python的tell和seek_4.2Python文件基本操作2:tell、seek

    文件基本操作2:tell.seek 遍历方法之一:迭代器 Readlines方法缺点:readlines是把文件变成列表形式存入内存里面,如果文件很大,一下子全部变成列表,系统负担太重,所以readl ...

  5. 以下不是python文件读写方法的是-Python 文件I/O

    Python 文件I/O 本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把 ...

  6. python代码大全表解释-python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...

  7. Python文件处理

    Python文件处理 Python文件处理 在python中,要对一个文件进行操作,得把文件抽象为Streams流或者说file object或者叫file-like objects. 这样将文件当作 ...

  8. python文件操作解码_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  9. python文件处理seek_python文件操作 seek(),tell()

    seek():移动文件读取指针到指定位置 tell():返回文件读取指针的位置 seek()的三种模式: (1)f.seek(p,0)  移动当文件第p个字节处,绝对位置 (2)f.seek(p,1) ...

最新文章

  1. Oracle EBS R12 客户表结构
  2. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
  3. 修改sublime列编辑快捷键
  4. 商业银行为什么大量组织高净值小规模活动?
  5. k8s中流量分离以及资源隔离实战
  6. VMware 安装kali——linux
  7. vim golang 插件
  8. 制作CentOS 5.9自动安装光盘iso镜像
  9. centos php 开启mysql扩展_CentOS 7下部署php7.1和开启MySQL扩展的方法教程
  10. 阿里、网易、滴滴共十次前端面试碰到的问题
  11. MYSQL中5.7.10ROOT密码及创建用户
  12. Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币...
  13. Git linux下保存密码方法
  14. 九度OJ题目1000: A + B(数学)
  15. FeedingBottle——体积小巧的 Aircrack-ng GUI
  16. 【单片机原理及应用】第一篇——单片机概述
  17. C++获取成员变量的偏移地址
  18. 自由到底意味着什么(二)叔本华说的第一类自由
  19. 获取手机通讯录联系人(包含模糊查询,dialog自定义,也有一个自定义通知栏)
  20. 【转】SCI论文写作全攻略

热门文章

  1. php函数有哪三种,【后端开发】php函数可以分为哪三种
  2. access-control-allow-origin php,PHP通过Access-Control-Allow-Origin 跨域
  3. mysql repo_centos7下使用wget命令安装mysql
  4. webstorm配置环境变量_webstorm中配置nodejs环境及npm步骤详细解说
  5. JavaWeb-JavaMail邮件开发
  6. DL动态加载框架技术
  7. Android LayoutAnimation使用及扩展
  8. 浙江大学远程教育计算机应用基础第4次,浙江大学远程教育计算机应用基础5.Powerpoint知识题.docx...
  9. SpringBoot开发最佳实践
  10. javascript常用的事件