文件模式


'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      计算结果

最新文章

  1. Jsp练习——连接数据库模拟登录
  2. Docker: adding a file from a parent directory
  3. 【leetcode】Maximum Gap(hard)★
  4. python+pygame游戏开发之使用Py2exe打包游戏
  5. Java反射机制深入研究
  6. 蒋鑫:为什么 Git 比 SVN 好
  7. linux中PHP dirname(__FILE__)路径问题解决
  8. 借Windows说明Linux分区和挂载点[转]
  9. [poj3107]Godfather_树形dp_树的重心
  10. Alpha冲刺Day6
  11. 关键字(4):grant授权/revoke回收权限
  12. oracle存储大文本clob、blob
  13. How To Scan QRCode For UWP (4)
  14. TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点
  15. python json 数据操作
  16. 【Asp.net入门11】第一个ASP.NET 应用程序-创建摘要视图
  17. 【Python】在控制台输出不同颜色的文字
  18. 关于阿里云centos 2.6下手机表情输入后无法保存到mysql数据库的问题调研及mysql版本从5.1升级到5.7的全过程纪要
  19. 自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
  20. 四、闭锁之CountDownLatch

热门文章

  1. 【JeeSite】登录和主题切换
  2. P2852 [USACO06DEC]牛奶模式Milk Patterns
  3. 【luogu P3390 矩阵快速幂】 模板
  4. android ListView 与GridView 学习总结(五)
  5. Python 学习笔记(七)Python字符串(四)
  6. ZooKeeper下载安装(Windows版本)
  7. iOS-GCD使用详解
  8. mysql if...else 的使用
  9. Angularjs基础(七)
  10. NEC 框架规范 template media