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

2. 相对路径 : 表示当前文件所在的目录开始的路径 ../ 表示上一级目录 ./表示本级目录

posted @ 2021-08-19 15:44  zhiy  阅读(57)  评论(0)    收藏  举报