Python 专题四 文件基础知识


Posted in Python onMarch 20, 2017

前面讲述了函数、语句和字符串的基础知识,该篇文章主要讲述文件的基础知识(与其他语言非常类似).

一. 文件的基本操作

文件是指存储在外部介质(如磁盘)上数据的集合.文件的操作流程为:

打开文件(读方式\写方式)->读写文件(read\readline\readlines\write\writelines)->关闭文件

1.打开文件

调用函数open打开文件,其函数格式为:

file_obj=open(filename[, mode[, buffering]]) 返回一个文件对象(file object)

  — filename文件名(唯一强制参数)

    ·原始字符串 r'c:\temp\test.txt'

    ·转移字符串 'c:\\temp\\test.txt'

  — mode文件模式

    ·r 读模式

    ·w 写模式

    ·a 追加模式(写在上次后面)

    ·+ 读/写模式(没有文件即创建,可添加到其他模式中使用)

    ·b 二进制模式(可添加到其他模式中使用)

  — buffering缓冲(可选参数)

    ·参数=0或False 输入输出I/O是无缓冲的,所有读写操作针对硬盘

    ·参数=1或True 输入输出I/O是有缓冲的,内存替代硬盘

    ·参数>1数字代表缓冲区的大小,单位字节.-1或负数代表使用默认缓冲区大小

注意:当处理二进制文件如声音剪辑或图像时使用'b'二进制模式,可以'rb'读取一个二进制文件.

2.关闭文件

应该牢记使用close方法关闭文件,因为Python可能会缓存(出于效率考虑把数据临时存储某处)写入数据,如果程序突然崩溃,数据根本不会被写入文件,为安全起见,在使用完文件后关闭.如果想确保文件被关闭,应该使用try/finally语句,并且在finally子句中调用close方法.如:

#Open your file
  try:
    #Write data to your file
  finally:
   file.close()

3.读写文件

调用函数write方法向文件中写入数据,其函数格式为:

file_obj.write(string) 参数string会被追加到文件中已存部分后面

file_obj.writelines(sequence_of_strings) 仅传递一个参数,列表[ ] 元组() 字典{}

注意:实用字典时字符串的顺序出现是随机的.

#使用write()写文件 
file_obj=open('test.txt','w') 
str1='hello\n' 
str2='world\n' 
str3='python' 
file_obj.write(str1) 
file_obj.write(str2) 
file_obj.write(str3) 
file_obj.close() 
#使用writelines()写文件 
file_obj=open('test.txt','w') 
str1='hello\n' 
str2='world\n' 
str3='python' 
file_obj.writelines([str1,str2,str3]) 
file_obj.close() 
#输出 本地test.txt文件 
hello 
word 
python

调用函数read方法读取数据,其函数格式为:var=file_obj.read(),其中read全部读取,返回string;readline读取一行,返回string;readlines读取文件所有行,返回a list of string.例:

#使用read 
print 'Use the read' 
file_obj=open('test.txt','r') 
s=file_obj.read() 
print s 
file_obj.close 
#使用readline 
print 'Use the readline' 
file_obj=open('test.txt','r') 
line1=file_obj.readline() 
line1=line1.rstrip('\n') 
print 'l1 ',line1 
line2=file_obj.readline() 
line2=line2.rstrip('\n') 
print 'l2 ',line2 
line3=file_obj.readline() 
line3=line3.rstrip('\n') 
print 'l3 ',line3 
file_obj.close 
#使用readlines 
print 'Use the readlines' 
file_obj=open('test.txt','r') 
li=file_obj.readlines() 
print li 
file_obj.close

输出内容如下:

Use the read 
hello 
world 
python 
Use the readline 
l1 hello 
l2 world 
l3 python 
Use the readlines 
['hello\n', 'world\n', 'python']

可以发现在使用readline()函数时它返回的结果是'hello\n'字符串,需要使用rstrip去除'\n',否则print输出时总空一行.同时写入文件时使用格式化写入比较方便,如s="xxx%dyyy%s\n"%(28,'csdn').

#格式化写入 
fd=open('format.txt','w') 
head="%-8s%-10s%-10s\n"%('Id','Name','Record') 
fd.write(head) 
item1="%-8d%-10s%-10.2f\n"%(10001,'Eastmount',78.9) 
fd.write(item1) 
item2="%-8d%-10s%-10.2f\n"%(10002,'CSDN',89.1234) 
fd.write(item2) 
fd.close() 
#输出 
Id  Name  Record  
10001 Eastmount 78.90  
10002 CSDN  89.12

二. 文件与循环

前面介绍了文件的基本操作和使用方法,但是文件操作通常会与循环联系起来,下面介绍while循环和for循环实现文件操作.代码如下:

#使用while循环 
fr=open('test.txt','r') 
str=fr.readline() 
str=str.rstrip('\n') 
while str!="": 
 print str 
 str=fr.readline() 
 str=str.rstrip('\n') 
else: 
 print 'End While' 
fr.close 
#使用for循环 
rfile=open('test.txt','r') 
for s in rfile: 
 s=s.rstrip('\n') 
 print s 
print 'End for' 
rfile.close()

其中for调用迭代器iterator,迭代器提供一种方法顺序访问一个聚合对象中的各个元素,它相当于通过Iter函数获取对象的迭代器,再通过next函数(该方法调用时不需要任何参数)获取下一个值.for可以遍历iterator_obj包括List\String\Tuple\Dict\File.如:

s='www.csdn.NET'
  si=iter(s)   #生成迭代器
  print si.next() #调用next依次获取元素,最后迭代器没有返回值时引发StopIteration异常

三. 总结

该篇文章主要讲述了Python文件基础知识,包括文件的打开、读写、关闭操作、使用循环读写文件及迭代器的知识.希望对大家有所帮助,如果有错误或不足之处,还请海涵!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
Ubuntu下安装PyV8
Mar 13 Python
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
Python实现Youku视频批量下载功能
Mar 14 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
pyshp创建shp点文件的方法
Dec 31 Python
python 内置函数汇总详解
Sep 16 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 #Python
Python闭包的两个注意事项(推荐)
Mar 20 #Python
使用python实现生成用户信息
Mar 20 #Python
Unicode和Python的中文处理
Mar 19 #Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
Mar 19 #Python
Python 专题三 字符串的基础知识
Mar 19 #Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 #Python
You might like
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
JS的反射问题
2010/04/07 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
DOM 高级编程
2015/05/06 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
人力资源主管职责范本
2014/03/05 职场文书
法定代表人授权委托书
2014/04/04 职场文书
横幅标语大全
2014/06/17 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
父亲节活动总结
2015/02/12 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
2015双创工作总结
2015/07/24 职场文书