lygyh9985825 发表于 2015-4-23 08:13:08

Python基础(8)--文件

  文件是我们储存信息的地方,我们经常要对文件进行读、写、删除等的操作,在Python中,我们可用Python提供的函数和方法方便地操作文件。文件可以通过调用open或file来打开,open通常比file更通用,因为file几乎都是为面向对象程序设计量身打造
  本文地址:http://www.iyunv.com/archimedes/p/python-file.html,转载请注明源地址。







文件处理的函数和方法
  使用Open()函数可打开文件,语法格式如下:



file_handler = open(filename,[,mode[,bufsize]]
  filename是你要操作的文件名,如果不在当前路径,需指出具体路径。mode是打开文件的模式,表示你要如何操作文件,bufsize表示是否使用缓存。
  mode





模式描述



r
以读方式打开文件,可读取文件信息。


w
以写方式打开文件,可向文件写入信息。


a
以追加方式打开文件,文件指针自动移到文件尾。


r+
以读写方式打开文件,可对文件进行读和写操作。


w+
消除文件内容,然后以读写方式打开文件。


a+
以读写方式打开文件,并把文件指针移到文件尾。


b
以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。


  bufsize





bufsize取值描述



0
禁用缓冲


1
行缓冲


>1
指定缓冲区的大小


>> myfile=open('myfile','w')
>>> myfile.write('hello,myfile!\n')
>>> myfile.close()
>>> myfile=open('myfile')
>>> myfile.readline()
'hello,myfile!\n'
>>> myfile.readline()
''
  把一行文本写成字符串,包含行终止符\n,写入方法不会为我们添加行终止符

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



>>> X,Y,Z=43,324,34
>>> S='Spam'
>>> D={'a':1,'b':2}
>>> L=
>>> 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()
  一旦我们创建了文件爱你就可以通过打开和读取字符串来查看文件的内容,而print语句则会解释内嵌行终止符来给用户满意的结果:



>>> bytes=open('datafile.txt').read()
>>> bytes
"Spam\n43,324,34\n${'a': 1, 'b': 2}\n"
>>> print bytes
Spam
43,324,34
${'a': 1, 'b': 2}
  鉴于Python不会自动把字符串转换为数字或其他类型的对象,需要使用诸如索引、加法等普通对象工具



>>> 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)
324
>>> numbers=
>>> numbers

>>> line=F.readline()
>>> line
"${'a': 1, 'b': 2}\n"
>>> parts=line.split('$')
>>> parts
['', "{'a': 1, 'b': 2}\n"]
>>> eval(parts)

>>> objects=
>>> objects
[, {'a': 1, 'b': 2}]
用pickle存储Python的原生对象
  使用eval可以把字符串转换成对象,pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求把字符串转换来转换去



>>> 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}
  pickle模块执行所谓的对象序列化,也就是对象和字节字符串之间的互相转换
  
页: [1]
查看完整版本: Python基础(8)--文件