第12章  输入/输出

大多数情况下,我们需要程序与用户交互。从用户得到输入,然后打印一些结果。

可以分别使用 raw_input 和 print 语句来完成这些功能。对于输出,可以使用多种多样的 str(字符串)类。

另一个常用的输入/输出类型是处理文件。创建、读和写文件的能力是许多程序所必须的。

文件

通过 file 类的对象来打开一个文件,使用 file 类的 read、readline 或 write 方法来恰当地读写文件。对文件的读写能力依赖于打开文件时指定的模式(模式可以为读模式('r')、写模式('w')或追加模式('a'))。最后完成对文件的操作时,调用 close 方法完成对文件的使用。

  1. # -*- coding: utf-8 -*-
  2. # Filename: using_file.py
  3.  
  4. poem = '''\
  5. Programming is fun
  6. When the work is done
  7. if you wanna make your work also fun:
  8. use Python!
  9. '''
  10.  
  11. f = file('poem.txt', 'w') # open for 'w'riting
  12. f.write(poem) # write text to file
  13. f.close() # close the file
  14.  
  15. f = file('poem.txt')
  16. # if no mode is specified, 'r'ead mode is assumed by default
  17.  
  18. while True:
  19. line = f.readline()
  20. if len(line) == 0: # zero length indicates EOF
  21. break
  22. print line, # notice comma to avoid automatic newline added by Python
  1. f.close()

首先,使用写模式打开文件,然后使用 file 类的 write 方法来写文件,最后用 close 关闭文件。

接下来,再一次打开同一个文件来读文件。如果不指定模式,默认为读模式。readline 方法读取文件的每一行,返回包括行末换行符的一个完整行。当一个空的字符串被返回时,表示文件末已经到达。

最后,使用 close 关闭这个文件。文件读到的内容已经以换行符结尾,所以在 print 语句上使用逗号消除自动换行。

储存器

python 提供一个标准的模块 pickle。可以在文件中储存任何 python 对象,之后可以把它完整无缺地取出来,被称为 持久地 储存对象。

另一个 cPickle,功能和 pickle 模块完全相同,用 C 语言编写,比 pickle 快1000倍。

  1. # -*- coding: utf-8 -*-
  2. # Filename: using_pickling.py
  3.  
  4. import cPickle as p
  5. #import pickle as p
  6.  
  7. shoplistfile = 'shoplist.data'
  8. # the name of the file where we will store the object
  9.  
  10. shoplist = ['apple','mango','carrot']
  11.  
  12. # write to the file
  13. f = file(shoplistfile, 'w')
  14. p.dump(shoplist, f) # dump the object to a file
  15. f.close()
  16.  
  17. del shoplist # remove the shoplist
  18.  
  19. # read back from the storage
  20. f = file(shoplistfile)
  21. storedlist = p.load(f)
  22. print storedlist

首先,使用 import..as 语法,以便于使用更短的模块名称。

储存 过程:首先以写模式打开一个 file 对象,然后调用储存器模块的 dump 函数把对象储存到打开的文件中。

取储存 过程:使用 pickle 模块的 load 函数的返回来取回对象。

A Byte of Python 笔记(10)输入/输出:文件和储存器的更多相关文章

  1. Python基础学习笔记---5.输入\输出 I\O文件操作目录

    在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...

  2. 简明python教程八----输入/输出

    通过创建一个file类的对象来打开一个文件,分别使用file类的read.readline或write方法来读写文件. 最后调用一个close方法来告诉Python我们完成了对文件的使用. poem= ...

  3. python笔记-10(socket提升、paramiko、线程、进程、协程、同步IO、异步IO)

    一.socket提升 1.熟悉socket.socket()中的省略部分 socket.socket(AF.INET,socket.SOCK_STREAM) 2.send与recv发送大文件时对于黏包 ...

  4. A Byte of Python 笔记(3)运算符和表达式

    第5章 运算符与表达式 大多数语句(逻辑行)都包含表达式.例子,如 2 + 3.一个表达式可以分解为运算符和操作数. 运算符 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8.'a' ...

  5. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容

    第14章 python 标准库 Python标准库是随Python附带安装的,它包含大量极其有用的模块. sys 模块 sys 模块包含系统对应的功能.如 sys.argv 列表包含命令行参数. # ...

  6. A Byte of Python 笔记(5)函数:定义、形参、局部变量、默认参数、关键参数

    第7章  函数 函数是重要的程序段.它们允许你给一块语句一个名称,然后你可以在程序的任何地方使用这个名称任意多次地运行这个语句块.这被称为 调用 函数. 定义函数 函数通过 def 关键字定义.def ...

  7. A Byte of Python 笔记(11)异常:try..except、try..finally

    第13章 异常 当你的程序中出现某些 异常的 状况的时候,异常就发生了. 错误 假如我们把 print 误拼为 Print,注意大写,这样 Python 会 引发 一个语法错误. 有一个SyntaxE ...

  8. A Byte of Python 笔记(8)

    第10章  解决问题——编写一个 python 脚本 程序功能:为所有重要文件创建备份 设计: 1.需要备份的文件和目录由一个列表指定 2.备份应该保存在主备份目录中 3.文件备份称一个 zip 文件 ...

  9. A Byte of Python 笔记(7)数据结构:列表、元组、字典,序列

    第9章 数据结构 数据结构,即可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python 有三种内建的数据结构--列表.元组和字典. list = ['item1', 'item2' ...

随机推荐

  1. Ubuntu 13.04 小米2S连接Eclipse真机调试

    最近想继续将自己以前的一些Android程序代码进行改进和优化,遂将以前的代码在windows下导入eclipse工程,谁知导入后便eclipse假死,甚至windows资源管理器也动弹不得,诡异的是 ...

  2. HDOJ 1495 非常可乐 【BFS】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用

    getCacheDir()方法用于获取/data/data/<application package>/cache目录 getFilesDir()方法用于获取/data/data/< ...

  4. JVM参数

    下面给出各种可以用户设置堆大小的命令行参数.注释列提供了一些设置参数的初级或高级建议.此外,后面还会给出更多的详细建议. 参数 描述 注释 -Xms<size> 设置堆的最小值 在生产阶段 ...

  5. android EncodingUtils

    EncodingUtils 报错Cannot Resolve Symbol EncodingUtils   提示是:错误:程序包org.apache.http.util不存在 错误:找不到符号  符号 ...

  6. c++ 学习备忘

    char* 到 LPCTSTR 转换 char *m_str = "test!"; MessageBoxW(CString(m_str)); CString to LPCTSTR ...

  7. python打包成exe

    目前有三种方法可以实现python打包成exe,分别为 py2exe Pyinstaller cx_Freeze 其中没有一个是完美的 1.py2exe的话不支持egg类型的python库 2.Pyi ...

  8. 张孝祥Java高新技术汇总

    一.自动装箱和拆箱: 在Java中有8种基本数据类型:byte,short,int,long,float,double,char,boolean.而基本数据类型不是对象,这时人们给他们定义了包装类,使 ...

  9. js判断微信内置浏览器

    做了一个h5页面来下载app,但如果页面是用微信扫一扫打开的,点击下载按钮下载不了app,原因是微信内置浏览器屏蔽了下载链接.所以增加了检测,如果用户是用微信浏览器打开的,则提示用户使用浏览器打开.那 ...

  10. 高级PHP工程师所应该具备一些技能

          很多面试,很多人员能力要求都有"PHP高级工程师的字眼",如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望给初级或已经达到中级的 ...