Python is Best

Python——文件存储

2017-09-21  本文已影响1人  So_ProbuING

Python对文件操作的流程

# 打开文件,得到文件句柄并赋值给一个变量
f = open('test', 'w', encoding='utf8')
# 操作文件
f.write('hello world')
# 关闭文件
f.close()

文件操作模式

r 读取
w 写入 打开写作,先截写文件 就是在打开文件后将文件的所有内容截断再重新写入文件内容
x 创建一个新的文件然后以写入的方式打开
a 以写入的方式打开,并且在文件的最后拼接内容
b 二进制
t text mode(文本模式 默认的)

  • 打开一个磁盘文件,用于更新(读取和写入)
* r+ 读写模式  先读后写,会先将文件读到然后写到文件后面 光标起始位置在最开始
* w+ 写读模式  先写后读 会先以w打开文件就会情况文件全部的内容
* a+ 追加模式 (+可读) 光标起始位置在最后
* + 加上+意味着同时为输入和输出打开文件

U 通用换行模式(弃用)

文件对象方法

f = open('test', 'r+')
print(f.tell())
# f.write('hello yourself it\'test ')
# time.sleep(100)
# f.close()
print(f.read(2))
print(f.tell())
f.tell()
with.open('log','r') as f:
    pass

当with代码执行完毕时候,内部会自动关闭并释放文件资源
在Py2.7后,with又支持同时对多个文件进行管理

with open('log1') as obj1,open('log2') as obj2:
    pass

with open(filepath1) as file对象...:
pass

with open('test', 'r', encoding='utf8') as file_read, open('56789', 'w', encoding='utf8') \
        as file_write:
    number = 0
    for read_line in file_read:
        number += 1
        if number == 3:
            read_line = ''.join([read_line.strip(), '王鑫\t', 'is Speaking\n'])
        file_write.write(read_line)

Python的文件支持

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

X, Y, Z = 30, 25, 33
S = 'Span'
D = {'a': 1, 'b': 2}
L = {1, 2, 3}
F = open('writeFile.txt', 'w', encoding='utf8')
F.write(S + '\n')
F.write("%s,%s,%s\n" % (X, Y, Z))
F.write(str(L) + '$' + str(D) + '\n')
F.close()

eval函数


# D = {'a': 1, 'b': 2}
# L = {1, 2, 3}
# F.write(str(L) + '$' + str(D) + '\n')
direc_file = readF.readline()
direc_splite = direc_file.split('$')
directs = [eval(P) for P in direc_splite]
print(directs)
# [{1, 2, 3}, {'a': 1, 'b': 2}]

用pickle 存储Python原生对象

import pickle
# 写入字典到文件
direct_a = {'a': 1, 'b': 2, 'c': 3}
F = open('pickleFile.txt', 'wb')
pickle.dump(direct_a, F)
F.close()
# 从文件取回字典
read_file = open('pickleFile.txt','rb')
direct_b = pickle.load(read_file)
print(direct_b)
# 输出
# {'a': 1, 'b': 2, 'c': 3}
上一篇 下一篇

猜你喜欢

热点阅读