第十二章 输入/输出

来源:互联网 发布:usb3.0根集线器 ubuntu 编辑:程序博客网 时间:2024/05/29 04:25

pickle模块部分转载自

作者: pzxbc
出处: http://pzxbc.cnblogs.com/

文章链接:http://www.cnblogs.com/pzxbc/archive/2012/03/18/2404715.html

第十二章 输入/输出

字符串在输出时的对齐: 

S.ljust(width,[fillchar])
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足

转自:http://www.jb51.net/article/15697.htm

print '|','*'.ljust(10),'|' print '|','*'.ljust(10,'-'),'|' print '|','*'.rjust(10,'-'),'|' print '|','*'.center(10,'-'),'|' for a in range(1, 6):   print 'a = '.ljust(5), str(a).ljust(10), 'b = '.ljust(5), str(a * 2)
输出:

| *          |
| *--------- |
| ---------* |
| ----*----- |
a =   1          b =   2
a =   2          b =   4
a =   3          b =   6
a =   4          b =   8
a =   5          b =   10

----------------------------

str函数和repr函数的区别

str()一般是将数值转成字符串。
repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。

str()出来的值是给人看的。repr()出来的值是给python看的,可以通过eval()重新变回一个Python对象。一般说来 eval( repr( x )) == x,部分例外

——————————————————————————————————————————————

文件

使用文件

poem = '''\Programming is funWhen the work is doneif you wanna make your work also fun:    use Python!'''f = file('poem.txt', 'w') f.write(poem) f.close() f = file('poem.txt')# 不指定的话,默认'r'模式while True:    line = f.readline()    if len(line) == 0:         break    print line,# Notice comma to avoid automatic newline added by Pythonf.close()
输出:

Programming is fun
When the work is done
if you wanna make your work also fun:
    use Python!

模式可以为读模式('r')、写模式('w')或追加模式('a')

追加模式('a'):不覆盖原来写的,只是在原来的后面添加新的内容

------------------

read() readline()以及readlines()区别

参考http://blog.csdn.net/lhyhr/article/details/8187623

.read() 每次读取整个文件,它通常将读取到底文件内容放到一个字符串变量中,也就是说 .read() 生成文件内容是一个字符串类型;

.readline()每只读取文件的一行,通常也是读取到的一行内容放到一个字符串变量中,返回str类型;

.readlines()每次按行读取整个文件内容,将读取到的内容放到一个列表中,返回list类型。

这里换行符都是存在的,readline()输出之后会保留行尾的空格,而readlines()也会,在每一个元素中都会有"\n"的出现。

a.txt

abc
ce
geksiehtk

>>> fopen=open('f:\\a.txt','r')>>> x=fopen.read()>>> print xabccegeksiehtk>>> type(x)<type 'str'>>>> fopen=open('f:\\a.txt','r')>>> x=fopen.readline()>>> print xabc>>> type(x)<type 'str'>>>> fopen=open('f:\\a.txt','r')>>> x=fopen.readlines()>>> print x['abc\n', 'ce\n', 'geksiehtk']>>> type(x)<type 'list'>>>>
——————————————————————————————————————————————

储存器

Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象
还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍)
——————————————————————————————————————————————

有何意义

python的pickle模块实现了基本的数据序列和反序列化。比如你有一个对象,想下次运行程序的时候直接用,可以直接用pickle打包存到硬盘上。或者你想把一个对象传给网络上的其他程序,可以用pickle打包,然后传过去,那边的python程序用pickle反序列化,就可以用了。
————————————————————————————————————————————

储存与取存储

import cPickle as p# import..as语法便于使用更短的模块名称shoplistfile = 'shoplist.data'# the name of the file where we will store the objectshoplist = ['apple', 'mango', 'carrot']f = file(shoplistfile, 'w')p.dump(shoplist, f) f.close()del shoplist f = file(shoplistfile)storedlist = p.load(f)print storedlist 
输出:
['apple', 'mango', 'carrot']

---------------------

dump函数

pickle.dump(obj, file, [,protocol])
  注解:将对象obj保存到文件file中去。
     protocol为序列化使用的协议版本,protocol默认值为0,ASCII协议,所序列化的对象使用可打印的ASCII码表示
     file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

-----------------------

load()函数

pickle.load(file)
  注解:从file中读取一个字符串,并将它重构为原来的python对象。
  file:类文件对象,有read()和readline()接口。

____________________________________________________________________





原创粉丝点击