码迷,mamicode.com
首页 > 编程语言 > 详细

Python 基本文件操作

时间:2016-06-08 14:05:44      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

文件模式


 

‘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())

1 f = open(20160608.txt,r)
2 char = f.read(1)
3 while char:
4     print (char)
5     char = f.read(1)

 

 

 

一行一行的读取文件:(使用readline() / readlines() / fileinput)

readline()

1 f = open(20160608.txt,r)
2 line = f.readline()
3 while line:
4     line = line.strip()
5     print (line)
6     line= f.readline()

 

注意:

  因为返回的行会带有‘\n‘故我对他进行了一个除空(strip())的处理

 

readlines()

1 f = open(20160608.txt,r)
2 lines = f.readlines()
3 for line in lines:
4     print (line.strip())

 

 

fileinput

1 import fileinput
2 for line in fileinput.input(20160608.txt):
3     print (line.strip())

 

 

 

文件迭代还更简单点么? 能!

1 f = open(20160608.txt,r)
2 for x in f:
3     print (x.strip())

 

在python2.2后文件对象就是可迭代的了。这体现出了python的优雅

 

最后


 

记得以前用cpp写了一个计算两个文件中数字相加之和的程序, 这次用python写写试试,觉得写得贼烂,还是一通c++的思路,只是函数上简洁了好多

 

 1 def ToNumberList(L):
 2     newL = []
 3     for l in L:
 4         for x in l.split( ):
 5             newL.append(x)
 6     return newL
 7 #将读取的列表转为元素都是一个一个元素的列表
 8 try:
 9     data1 = open(data1.txt,r)
10     data2 = open(data2.txt,r)
11     data1List = data1.readlines();
12     data2List = data2.readlines();
13     newdata1 = ToNumberList(data1List)
14     newdata2 = ToNumberList(data2List)
15 
16     for i in range(len(newdata1)):
17         print (int(newdata1[i]) + int(newdata2[i]))
18     
19 finally:
20     data1.close()
21     data2.close()

 

 

技术分享          技术分享         技术分享

  data1              data2      计算结果

 

Python 基本文件操作

标签:

原文地址:http://www.cnblogs.com/leihui/p/5569644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!