python 文件的操作
python 文件的操作
使用open()内置函数 操作文件
文件模式
r : 只读模式
w : 写入模式 只能写入 不能读取 如果文件存在 覆盖 不存在 创建文件
b : 以二进制形式 打开文件 (操作非文件)
rb :以二进制模式读取文件
wb : 以二进制写入 注意 以二进制形式写入 只能写入二进制
a : 追加模式
r+ : 可读写 文件不存在报错
w+ : 可读写 文件不存在 创建
t:txt形式打开
mode 默认为rt
# 在python 中 使用 内置函数 open 函数 打开并操作一个文件
# 参数 file 用来指定打开的文件路径
# mode 打开文件时模式 r 表示只读
# encoding 打开文件时的编码方式
# newline : 指定写完一行后 的追加符
file = open('../闭包.py', encoding='utf-8') #注意读取的时候 编码方式 要和 写入时的编码方式一致
print(file.read()) # 一次全读取
file.read(10)# 一次读取10个字符出来
file.readline() # 读一行
file.readlines() # 将所有行的数据读取放入列表
file.close() # 关闭资源
文件拷贝
old_file = open('1-open.py',mode='r',encoding='utf-8')
new_file = open('11.txt',encoding='utf-8',mode='w')
new_file.write(old_file.read(10))
new_file.close()
old_file.close()
csv文件的读写
import csv
class People(object):
def __init__(self,name,age,city):
self.name=name
self.age=age
self.city = city
if __name__ == '__main__':
# 写
# p1 = People('name','age','addr')
# p2 = People('zzy',20,'hn')
# p3 = People('zjw',20,'hn')
# p4 = People('hhh',20,'hn')
# p5 = People('333',20,'hn')
# l = [p1,p2,p3,p4,p5]
# file = open('info.csv',encoding='utf-8',mode='w',newline="") # newline 表示 写完一行后 做的操做 默认是换行
# w = csv.writer(file)
# for i in l:
# w.writerow([i.name,i.age,i.city])
'''
name,age,addr
zzy,20,hn
zjw,20,hn
hhh,20,hn
333,20,hn
'''
# 读
file = open('info.csv', encoding='utf-8', mode='r', newline='')
r = csv.reader(file)
for i in r:
print(i)
'''
['name', 'age', 'addr']
['zzy', '20', 'hn']
['zjw', '20', 'hn']
['hhh', '20', 'hn']
['333', '20', 'hn']
'''
StringIo 和 BytesIO 将数据移入到缓存
from io import StringIO , BytesIO
s_io = StringIO()
s_io.write('hello') # 将数据写入缓存
s_io.write('python')
print(s_io.getvalue())
print('hello',file=s_io) # 将输出 写入到缓存 不在控制台显示
b_io = BytesIO()
b_io.write('nihao'.encode('utf-8')) # 必须是要二进制
print(b_io.getvalue().decode('utf-8'))
标准输出 标准输入 错误输出
import sys
# 重定向 输出 输入 错误的输出位置
sys.stdin # 标准输入
sys.stdout # 标准输出
sys.stderr # 错误输出
Json 和 pickle
pickle : 用来将数据原封不动的转化为二进制 但是这个二进制只能在python中识别
json : 只能保存一部分信息 作用时用来在不同的平台里传递数据 存储的都是基本的数据类型
import json
# json.dump(data,file) # 转化为json 并写入文件
# json.dumps() # 转化为json
# json.load(file) # 直接从一个文件中读取
# json.loads()# 转化为 python的对象
import pickle
a = {'name':'zzy'}
b= pickle.dumps(a) # 转化为二进制
# b= pickle.dump(a,file) # 转化为二进制 并且 直接写入文件
print(b)
c = pickle.loads(b) # 从二进制转化回来
# c = pickle.load(file) #直接从一个文件中读取
print(c)
路径说明
1. 绝对路径 : 表示从盘符开始的路径 列如: ( r'E:\code\python\demo\闭包.py')
注意 在编程语言中 \ 表示 转义字符 所以我们 要改变\ 为 \ \ 或者 / 或者 在python中在字符串前 加 r