Pyhton_IO_1

来源:互联网 发布:全国中小学名录数据库 编辑:程序博客网 时间:2024/06/02 02:56

Python读和写文件
open() 将会返回一个 file 对象,基本语法格式如下:

open(filename, mode)

filename:filename 变量是一个包含了你要访问的文件名称的字符串值。
mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
不同模式打开文件的完全列表:
模式 描述

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

Python对象的使用

f.read()
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
以下实例假定文件 foo.txt 已存在(上面实例中已创建):

#打开一个文件f = open("/dome/main.txt", "r")str = f.read()print(str)# 关闭打开的文件f.close()#执行以上程序,输出结果为:#Python 是一个非常好的语言。#是的,的确非常好!!

f.readline()
f.readline() 会从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

f = open("/tmp/foo.txt", "r")str = f.readline()print(str)# 关闭打开的文件f.close()#执行以上程序,输出结果为:Python 是一个非常好的语言。

实例把一个文件传入的另一个文件夹:

fi = open('G:/dome/a/人生心理学.txt')   #创建源文件of = open('G:/dome/b/心理学_1.txt','w') #创建插入的文件目录for line in fi:                         #循环查询源文件的字节    of.write(line)                      #给目标文件传值fi.close()                              # 关闭打开的文件of.close()                              # 关闭打开的文件#print('ok.....')

Python序列化和反序列化
python的pickle模块实现了基本的数据序列和反序列化。
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
pickle 模块
基本接口:

pickle.dump(obj, file, [,protocol])

有了 pickle 这个对象, 就能对 file 以读取的形式打开:

x = pickle.load(file)

实例如下:

# 使用pickle模块将数据对象保存到文件class Person:    def __init__(self,name=None,age=None):         self.name = name         self.age = age    def __str__(self):         return "我是{0},今年{1}岁".format(self.name,self.age)#-----------------序列化---------------------- p = Person("张三",18)import picklepickle.dump(p,open('G:/dome/b/person.dat','wb'))print(p)#----------------反序列化---------------------import pickle,pprintp = pickle.load('G:/dome/b/person.dat','rb')pprint.pprint(p)  #调用类的路径print(p)
原创粉丝点击