「学习笔记——Python」Python输入和输出
2013-03-02 16:17
369 查看
7 Python 输入和输出
呈现程序输出结果的方式有很多,可以以可读方式打印出来,也可以写入文件以便将来使用。这一章,将会讲述这些可能的方式。Table of Contents
1 输入格式2 读写文件
1 输入格式
很多时候,我们不仅仅想只打印出结果,还对输出格式有所需求。有两种方式可以完成这一点,一是使用字符串的分割,合并,等 功能自己确定输出格式,你可以得到你想要的任何布局。二是使用 str.format() 函数。 这里有一个问题,如何把各种各样的值转化为字符串呢?Python 提供了 repr() 和 str() 来将任何值转化为字符串。 str() 函数会返回人类易读的格式, 而repr()则会返回供解释器读取的格式。但是,如果转化不***类易读的方式,两个函数 的输出就会一样。>>> print str('hello\n') hello >>> print repr('hello\n') 'hello\n'
下面是两种打印列表的方式:
>>> for i in range(1,11): ... print repr(i).rjust(2), repr(i*i).rjust(3), ... print repr(i*i*i).rjust(4) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000
>>> for i in range(1,11): ... print '{0:2d} {1:3d} {2:4d}'.format(i,i*i,i*i*i) ... 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 6 36 216 7 49 343 8 64 512 9 81 729 10 100 1000
注意2,3,4是指占几列,列之间的空格是python自动加上的,除str.rjust()之外,还有str.ljust(),str.center(), 它们默认不会截断,除非你用 r.ljust(n)[:n] 指定. : 前的数字表示这一列的内容显示format后的第几个参数,后面的数字表示占几列
还有一个方法,str.zfill(),可以在数字左边加0.
>>> '12'.zfill(4) '0012'
str.format() 使用的基本方式就是
>>> 'this is a {} called {}'.format('language','python') 'this is a language called python'
{}内的内容决定了这个位置是什么
>>> 'this is a {} called {}'.format('language','python') 'this is a language called python'>>> 'this is a {0} called {1}'.format('language','python')
'this is a language called python'
>>> 'this is a {1} called {0}'.format('language','python')
'this is a python called language'
>>> 'this is a {1} called {1}'.format('language','python')
'this is a python called python'
如果{}内出现了关键字,其内容由format后的定义决定
>>> 'my favourite language is {lan}'.format(lan = 'python') 'my favourite language is python'
旧的字符串格式 str.format() 是一种新的字符串格式化方式,以前的代码都使用 %, 和sprintf差不多
>>> pi = 3.1415926 >>> 'test float format:%5.2f' % pi 'test float format: 3.14'
2 读写文件
open() 返回一个文件对象,经常带有两个参数:open(filename, mode) mode 可以为:r: 只读
w: 只写
a: 添加
r+: 读写
mode 也可以缺省,默认为r
>>> open('fileToTest.hi', 'r') <open file 'fileToTest.hi', mode 'r' at 0xb6e6ad30>
上述代码会返回一个文件对象,我们可以用它进行文件操作
>>> fileobj = open('fileToTest.hi', 'r') >>> fileobj.read() 'this is a file to be test by python\nthis is second line\nthis is end line' >>> fileobj.read() ''
把文件内容读完后,再去读就会返回空字符串
还可以一行一行读
>>> fileobj = open('fileToTest.hi', 'r') >>> fileobj.readline() 'this is a file to be test by python\n' >>> fileobj.readline() 'this is second line\n' >>> fileobj.readline() 'this is end line'
或者返回多行构成的list
>>> fileobj = open('fileToTest.hi', 'r') >>> fileobj.readlines() ['this is a file to be test by python\n', 'this is second line\n', 'this is end line']
另一种逐行读取的方式是:
>>> fileobj = open('fileToTest.hi', 'r') >>> for line in fileobj: ... print line ... this is a file to be test by python this is second line this is end line
可以使用 f.wirte(string) 写入文件
>>> fw = open('fileToTest.hi', 'w') >>> fw.write('Hello,pyhon\nhi,jack') >>> fw.close()
写入之后要用f.close()关闭文件对象,否则f.write(str)没有真正写入文件。
如果一个值不是字符串,可以用str()先转化为字符串,再用f.wirte()写入。
f.tell()返回文件对象当前位置,f.seek(offset, fromWhat) 用于设置当前位置
>>> fr = open('fileToTest.hi', 'r') >>> fr.tell() 0L >>> fr.read() 'hihio,pyhon\nhi,jack' >>> fr.tell() 19L >>> fr.read() '' >>> fr.seek(0,0) >>> fr.read() 'hihio,pyhon\nhi,jack'
如果仅仅是读写字符串,那么没什么大问题,但是如果文件中存储的是整数,或者更复杂的数据结构,比如字典。就会 遇到麻烦,因为读写都是针对字符串而言的。鉴于这个原因,python提供了名为 pickle 的模块。可以将任何类型的 python 对象转化为字符串,这个过程称为 picking. 反过来也可以将字符串转化为任何类型的对象,这个过程称为 unpicking.
例如:x 是一个对象, f 是一个用于写的文件对象, picking过程就是:
pickle.dump(x, f)
unpicking过程:
x = pickle.load(f)
下面做一个测验
>>> fw = open('foo.c', 'w') >>> x = {'asdf','qwert'} >>> import pickle >>> pickle.dump(x,fw) >>> fw.close() >>> fr = open('foo.c', 'r') >>> y = pickle.load(fr) >>> y set(['qwert', 'asdf'])
原文链接:http://docs.python.org/2/tutorial/inputoutput.html
相关文章推荐
- PHP输入输出流学习笔记
- python调用外部子进程,通过管道实现异步标准输入和输出
- 利用Python中的输入和输出功能进行读取和写入的教程
- Python(三) 2.7.6下的字符输入与输出
- 用 Python 的输入输出功能读取和写入数据
- 我的Python学习之路 Python的输入输出与基本数据类型
- python3基础-11 输入和输出
- python学习(3)输入和输出
- OJ中Python的输入与输出
- Python菜鸟学习手册10----文件的输入与输出
- python学习之 输入 输出
- Python输入输出及其他
- Python第三天-输入输出
- Python3 输入和输出
- python的标准输入,输出,错误输出。
- python入门(二)--切换环境,输入与输出
- Python的输入和输出以及流程控制语句
- python学习1——标示符、关键字、输出、输入、运算符、赋值、取整取余的作用、判断语句
- python3 下的文件输入输出特性以及如何覆盖文件内容和接下去输入
- python的输入和输出