Python 基本文件操作
文件模式
'r' |
读模式 |
'w' |
写模式 (清除掉旧有数据并重新开始) |
'a' | 追加模式 |
'b' | 二进制模式 |
'+' | 读/写模式 |
注意:
'b' : 二进制模式 可添加到其他模式中使用
'+' : 读/写模式 可添加到其他模式中使用
几个概念:
为什么使用二进制模式?:
我们都知道数据存储的时候都是以二进制的形式存储的,例如文本和图像。
这会有一个问题,不同操作系统中的换行符不一样,例如在UNIX中的规范是\n表示结束一行另起一行,而在windows中却是\r\n。
若在python中以文本形式打开文件,python会做一些自动的处理,即将\r\n和\n的互换,但是这样却会破坏二进制数据。
故我们在需要保护原始数据的情况下会使用二进制的形式打开文件。
缓冲区的概念:
在文件打开函数(open)中的第三个参数,控制着缓冲区的大小(由于参数可正可负,取绝对值即可)。
那什么是缓冲区呢?
即使用内存代替硬盘,让程序更快,更新的数据若无特殊的函数调用(close()或flush())是不会回写到硬盘中的。
为什么要关闭文件:
由于缓冲区的存在,关闭文件的意义就好理解了,就是为了使更改后的数据回写到硬盘中。
当然也可以不手动关闭文件,因为程序在执行完毕后会自动关闭文件,但是这是习惯问题,好的习惯总是会受用一生的。
文件操作的几个基本函数:
read(n) | 读取[指定]字符串 |
readline() | 读取一行 |
readlines() | 读取全部行,返回值为一个列表 |
write() | 写入数据 |
writelines() | 写入一个list |
seek() | 重定向,重新指定文件指针(c语言中的概念) |
tell() | 返回当前文件指针位置 |
注意:
其中可能有些形参我没标注上,但是函数的功能是一目了然的。
文件迭代器
一个字符一个字符的读取文件: (使用read())
f = open('20160608.txt','r')
char = f.read(1)
while char:
print (char)
char = f.read(1)
一行一行的读取文件:(使用readline() / readlines() / fileinput)
readline()
f = open('20160608.txt','r')
line = f.readline()
while line:
line = line.strip()
print (line)
line= f.readline()
注意:
因为返回的行会带有'\n'故我对他进行了一个除空(strip())的处理
readlines()
f = open('20160608.txt','r')
lines = f.readlines()
for line in lines:
print (line.strip())
fileinput
import fileinput
for line in fileinput.input('20160608.txt'):
print (line.strip())
文件迭代还更简单点么? 能!
f = open('20160608.txt','r')
for x in f:
print (x.strip())
在python2.2后文件对象就是可迭代的了。这体现出了python的优雅
最后
记得以前用cpp写了一个计算两个文件中数字相加之和的程序, 这次用python写写试试,觉得写得贼烂,还是一通c++的思路,只是函数上简洁了好多
def ToNumberList(L):
newL = []
for l in L:
for x in l.split(' '):
newL.append(x)
return newL
#将读取的列表转为元素都是一个一个元素的列表
try:
data1 = open('data1.txt','r')
data2 = open('data2.txt','r')
data1List = data1.readlines();
data2List = data2.readlines();
newdata1 = ToNumberList(data1List)
newdata2 = ToNumberList(data2List) for i in range(len(newdata1)):
print (int(newdata1[i]) + int(newdata2[i])) finally:
data1.close()
data2.close()
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIUAAAA4CAIAAABc7KzAAAACs0lEQVR4nO3awY2rMBAG4CnKJ/fiq6XXheUKLFpAcgXIFXCgAG5cc6AL3mGXxAaSBXsShmh+cQmrTIK/ZGychX8cSoHbZzNxXoY9aIU9aIU9aGWfR1sbY0zd4nsEDQCgQ9FFDE7CHOlw6oB0Q9GbyssfHk1ljDHG1E1T4XrMl66dk0UeQceg6aMDcTI1yC5Ulr39qsf2uGco8gh6NWobp7JS9sYyc3WPyelVgwq6qGvNYQ+c4BQM+pQp5Os8Css9pnSS8/nFPAYnkcbxpOn8mzzwMOJ6aOX25Vs8sDGmafpdGHy2a32Fx1swJvbIytsWQtyvjmcTI+jDBQcn00I/6yxy9+fzfski+TL3F463iqIcG4HhSZW8z3Va7ITF1cT7u9TCHrTCHrTCHrTCHrTCHrRygsc4Xuww8LnXYg/2OHt82YM9ED36aNOkat7h4RUAgLBDzjV0Tqy2S5QvGhQbVRR2oOTR1vF2VfoIyaNzAqQQJR7aY42I1+tPBh2Ptl4N/8apMg+vAFTwioDHk1J0PG5NvWpQbV3StZYenRMgbTdR8LBC2m7jPCGPdQp/CFl42LlNne/ROSHc5p8IexT/LJV4eA3zUBZ6WCvjGTinjtegwjgG9SjkaHv0TWWqpi/QSD1sNIeXeTzGblF2/9FZCUorAFDhcUY4qh4YGIlH9OUo8tg4gjrewX7W3HeMO4nyBD2QMGKPxacY22N7Zn5xdFbC6lmdlcTuP1AxIo+oTSc3cgHjqnI8Rq+v4NHWBg/j9ny/JPP7sbm4Sjvh/mP9HrwCSv1qE6Otce8Hizx++0y0QeJ1/n5J50T0XK+A1nzeP/lvH8z7wXSzKLNfJVtYxztVclxovYsR3t9lD/ZgD/ZgD/ZgD/ZA9+C8CHvQCnvQCnvQCnvQCnvQCnvQCnvQCnvQyn/DRo7E5CfQ6AAAAABJRU5ErkJggg==" alt="" /> aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGsAAAAzCAIAAAAfAGHBAAACwklEQVR4nO2Zy3HDIBCGtyhO9MKVmXTBUAGjFjRDBRoq0EEF6MY1B3WhHBzbvJwIFkdOsv9wsRLW8LEPVoY3Ek7w/iPa/66IIFZEECsiiNWXBOdRKaXGuRtBbziUJF3L2kNr3GAoBIaql1ImOA1KKaXUOE1DT4K7k9kSveEtBL3hwI2PPlUb2ff9gu8218laiN9E8dqZYHkDdxKH5WQ6q3A4hw2lT2oMnU3QtwHcc8dt82VvePb1dQhPJtgcffku23zwAcGKQz2ZYH3aCacGM73hbXkwj2JveM2iziWIAPg5OyjG9angohCYkwDAeU0+OJUgBmAytzWfXpTcZqoy6pkEMQCLlaQdYWr8l+RBjNvkm2y8V+aqNHQeQVzcOVkg2MUHaw/iNIKYLuI6P8mDeA90sr4kfd3VJWpnmX8xygPv+0XX4shIyyHQuxmsiCBWRBArIogVEcSKCGL1cwS37ZcNBYf+jQgSQSL4sgNNcA1au2F6BkErAACY9i07XAzLfjQVFoVMBxaZ9jiC8xi2wfGnTgQXw4AzhiEobS+PszI/SwzBecyAFR7hCFoBIJwVL0DwgSmUD05jFrbziInllOBiGHC97K9AUDOul8LzzpUE+aIwIaivwXs+wcUwZop/6koQ/aI1ImglXDePJKg1D3N/ix0rQbhtc+JuyPQmuE6DGqYVwS8mqIPqgSN4321i9vhYNAchBQAId3/CTD+CPfBFBAMHRBEsDCfq4/pyo7rhu0EUtgvBTvhCgomn9CZYrgnf+GA2a9EcfR/sii8gGKSb6CrsqrbdkeBm5XMIzqPqh+/9cVfX6IPFQhznh+MjX4MVgIviIr557HujRhH8jL6gjbOyvatbDAvmWgHYSrI++K2z5406bkIbozhqjevjNxpPvc300L98N0MEiSARJIJEkAi+FsG/KiKIFRHEighi9QEp2DWpu1FDQAAAAABJRU5ErkJggg==" alt="" width="119" height="56" /> aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAACDCAIAAAChoMpnAAAB5UlEQVR4nO2b0Y3DIBAFqYuCqIdqaIZi9j4S24Ad5yLlzp7ljfITS5EYYZNl8QvmlHD1AP4KidGQGA2J0ejFioXw/OR60Yi+RCNWLERbdRLcbRMrqTcpFtL/j+drTCD2eMDK8i0FS+XoFxC6xaOkbfFAT5cNYqlZPHI08oQ1YnuTRJ60Raxa3GmgJ22bsfY+fF4JLsRK6haMHNnrx8tVMearhvQdJimCHSExGhKjITEao1jN/V9ztbj8ZbO2Z/22JViMjVi1iN16LmLr9rlsYiX1Jqhmwe4Za8TQ9f5rMfgO7TOxsZN1YyRmZk5uxcPFY3fltpyJ5QjuDZ+Jdb3hahF1THEqZuCDpWmKYDdIjIbEaEiMxpueR3tMAeoL2HnPY2gN+Ol5jPgpggeOdmi35ROxQrwVV16JVYucXab9Vqx/fwzBezHoKfsbsbE7wOFMDNRs2/NZ+w3EqVhoXoajvRI3TRHsBonRkBgNidFQtoXGBBEQt2LKtjBQtoWGsi00lG2hMUkR7AiJ0ZAYDYnRULaFtvVUtuVxhVPvTxgomCoC4lbMxa2obMs9UbYFZWUTFcFukBgNidGQGA1lWzz1PEb8FMEDqNeflW1RtuUmKNtCQ9kWGsq20JAYDYnRkBgNidGQGI0fYWubD9JQnj0AAAAASUVORK5CYII=" alt="" />
data1 data2 计算结果
Python 基本文件操作的更多相关文章
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- python的文件操作及简单的用例
一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...
- python基本文件操作
python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...
随机推荐
- java 枚举类型enum
简单介绍 Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大家先打开jdk 中的Enum 类简单读一下,这个类 ...
- SQL limit
employee 表 id name gender hire_date salary performance manage deparmant 1001 张三 男 2/12/1991 00:00:00 ...
- c语言描述的简单选择排序
基本思想:首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序 #include<stdio.h> #include<stdl ...
- Mac改变系统截图存储路径
时间:2018年9月13日 人物:同事和我 事情:看苹果秋季新品发布会,并且想要截图下来当时的新品介绍. 问题:系统的截图默认是存储在桌面,整理的时候,不是很方便. Mac截图快捷键: 截取选中区域: ...
- Python基础—15-正则表达式
正则表达式 应用场景 特定规律字符串的查找替换切割等 邮箱格式.URL.IP等的校验 爬虫项目中,特定内容的提取 使用原则 只要是能够使用字符串函数解决的问题,就不要使用正则 正则的效率较低,还会降低 ...
- TinyMCE(富文本编辑器)在Asp.Net中的使用方法
TinyMCE(富文本编辑器)在Asp.Net中的使用方法 转至:http://www.cnblogs.com/freeliver54/archive/2013/02/28/2936506.htm ...
- 嵌入式:指针的指针、链表、UCOS 的 OSMemCreate 。
初看,UCOS 的 OSMemCreate 代码,感觉有点怪怪的,比如,把 指针指向的地址 强制转换成 指针的指针的指向地址 ?那转换后 指针的指针 又是什么? void OSMemCreate (O ...
- 如何在match中使用正则表达式
这是在实现搜索功能的时候遇到的一个问题,在搜索的场景中,会根据搜索框中输入的内容,匹配出包含搜索内容的部分.简单模拟还原使用场景: 首先定义一个遍历 value 用来接收输入的内容 var value ...
- c++stl应用入门
在这篇中,我会讲几个简单易懂且比较常用的stl函数,这些函数在noip系列考试中往往被允许使用(既然让用我们自然不用手码了...) (末尾有惊喜!) 1.sort 绝大部分刚入门的oier第一个接触的 ...
- 小程序swiper不显示图片
按照文档上的代码运行后,发现图片不显示 解决办法: app.wxss文件 align-items: center;这句话删除了,运行 OK!