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

Python基础(8)--文件

时间:2014-05-17 18:58:06      阅读:419      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   class   code   c   

文件可以通过调用open或file来打开,open通常比file更通用,因为file几乎都是为面向对象程序设计量身打造

本文地址:http://www.cnblogs.com/archimedes/p/python-file.html,转载请注明源地址。

打开文件

打开文件程序会调用内置的open函数,首先是外部名,接着就是处理模式。

常见的文件运算:

bubuko.com,布布扣

在任何情况下,Python程序中的文本文件采用字符串的形式,读取文本时会返回字符串形式的文本

从文件中读取的数据回到脚本时是一个字符串,所以如果字符串不是你所需的,就得将其转换成其他类型的Python对象

实际应用中的文件

首先看一个文件处理的一个简单的例子:

bubuko.com,布布扣
>>> myfile=open(myfile,w)
>>> myfile.write(hello,myfile!\n)
>>> myfile.close()
>>> myfile=open(myfile)
>>> myfile.readline()
hello,myfile!\n
>>> myfile.readline()
‘‘
bubuko.com,布布扣

把一行文本写成字符串,包含行终止符\n,写入方法不会为我们添加行终止符

在文件中存储并解析Python对象

必须使用转换工具把对象转换成字符串,注意文件数据在脚本中一定是字符串,而写入方法不会自动地替我们做任何向字符串格式转换的工作

bubuko.com,布布扣
>>> X,Y,Z=43,324,34
>>> S=Spam
>>> D={a:1,b:2}
>>> L=[1,2,3]
>>> F=open(datafile.txt,w)
>>> F.write(S+\n)
>>> F.write(%s,%s,%s\n%(X,Y,Z))
>>> F.write(str(L)+$+str(D)+\n)
>>> F.close()
bubuko.com,布布扣

一旦我们创建了文件爱你就可以通过打开和读取字符串来查看文件的内容,而print语句则会解释内嵌行终止符来给用户满意的结果:

bubuko.com,布布扣
>>> bytes=open(datafile.txt).read()
>>> bytes
"Spam\n43,324,34\n[1, 2, 3]${‘a‘: 1, ‘b‘: 2}\n"
>>> print bytes
Spam
43,324,34
[1, 2, 3]${a: 1, b: 2}
bubuko.com,布布扣

鉴于Python不会自动把字符串转换为数字或其他类型的对象,需要使用诸如索引、加法等普通对象工具

bubuko.com,布布扣
>>> F=open(datafile.txt)
>>> line=F.readline()
>>> line
Spam\n
>>> line=F.readline()
>>> line
43,324,34\n
>>> parts=line.split(,)
>>> parts
[43, 324, 34\n]
>>> int(parts[1])
324
>>> numbers=[int(p) for p in parts]
>>> numbers
[43, 324, 34]
>>> line=F.readline()
>>> line
"[1, 2, 3]${‘a‘: 1, ‘b‘: 2}\n"
>>> parts=line.split($)
>>> parts
[[1, 2, 3], "{‘a‘: 1, ‘b‘: 2}\n"]
>>> eval(parts[0])
[1, 2, 3]
>>> objects=[eval(p) for p in parts]
>>> objects
[[1, 2, 3], {a: 1, b: 2}]
bubuko.com,布布扣

用pickle存储Python的原生对象

使用eval可以把字符串转换成对象,pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求把字符串转换来转换去

bubuko.com,布布扣
>>> F=open(datafile.txt,w)
>>> import pickle
>>> pickle.dump(D,F)
>>> F.close()
>>> F=open(datafile.txt)
>>> E=pickle.load(F)
>>> E
{a: 1, b: 2}
bubuko.com,布布扣

pickle模块执行所谓的对象序列化,也就是对象和字节字符串之间的互相转换

 

Python基础(8)--文件,布布扣,bubuko.com

Python基础(8)--文件

标签:des   style   blog   class   code   c   

原文地址:http://www.cnblogs.com/archimedes/p/python-file.html

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