python的文件操作

70 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情

大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~

文件操作

文件——》file

操作文件步骤:

1.打开文件

2.对文件进行操作,保存

3.关闭文件

1.1 打开

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
绝对路径复制:CTRL+shift+c
绝对路径:通常指的是从盘符开始的完整路径
D:\小川\study\pythonproject\python68期_Text\day15\demo.txt
    
相对路径:通常使用"."或者".."开头
"./" 表示当前文件所在的目录,可以省略不写
"../"表示当前目录的上一级目录
"../../"表示上上级目录
"/"开头的代表根目录
相对路径:../day15/demo.txt

路径前面加一个r作用是规避转义字符

1.2 关闭

with open...as 语句
with open(fileName) as f:
    print(f.read())
f只能在with内部使用,with结束了就自动close关闭掉了

1.3 读取

fileName = 'demo.txt'
with open(fileName) as f:
    content = f.read()
    print(content)

open打开文件默认以文本文件形式打开

fileName = 'demo2.txt'
with open(fileName,encoding='utf-8') as f:
    content = f.read()
    print(content)
如果读取完了文件,再去读取会返回一个空字符串
fileName = 'demo2.txt'
with open(fileName,encoding='utf-8') as f:
    content = f.read(4)
    content = f.read(4)
    content = f.read(4)
    content = f.read(4)
    print(content)
# 读取大文件方式
fileName = 'demo2.txt'
with open(fileName,encoding='utf-8') as f:
    c = 2
    while 1:
        content=f.read(c)
        if content=="":
            break
        print(content,end="")
        
fileName = 'demo2.txt'
with open(fileName,encoding='utf-8') as f:
    all_content = ""
    c = 2
    while 1:
        content=f.read(c)
        if content=="":
            break
        all_content+=content
print(all_content)
读取一行  readline
fileName = 'demo2.txt'
with open(fileName,encoding='utf-8')as f:
    print(f.readline(),end="") # 读取一行
    print(f.readline(),end="") # 读取一行
    print(f.readline(),end="") # 读取一行
    print(f.readline()) # 读取一行
fileName = 'demo2.txt'
with open(fileName,encoding='utf-8')as f:
    l = f.readlines() # 一行一行读取内容,一次性读完存到一个列表里面
    print(l[1:3])  # ['世界\n', '我是\n']

1.4 写入

write()  括号内部需要传递一个字符串
有返回值,返回的是你写入的字符串长度

r 只读
w 可写,会默认覆盖文件,如果文件不存在则会创建文件
a 追加,如果文件不存在则会创建文件

fileName = 'demo3.txt'
with open(fileName,'w',encoding='utf-8')as f:
    f.write("你好世界\n")
    f.write("你好世界\n")
    f.write("你好世界\n")
    f.write("你好世界")
    
    
fileName = 'demo3.txt'
with open(fileName,'a',encoding='utf-8')as f:
    f.write("你好世界")
    f.write("你好世界")

1.5 二进制文件

所有的文本文件之外的都叫做二进制文件
t 读取文本文件
b 读取二进制文件
fileName = r'C:\Users\EDY\Desktop\陈奕迅 - 不要说话.mp3'
with open(fileName,'rb')as f:  # 读取
    new_path = 'qq.mp3'
    with open(new_path,'wb')as new_f: # 写入新文件
        c = 1024*100
        while 1:
            content = f.read(c)
            if not content:
                break
            new_f.write(content)
fileName = r'C:\Users\EDY\Desktop\陈奕迅 - 不要说话.mp3'
with open(fileName,'rb')as f:  # 读取
    new_path = 'qq.mp3'
    with open(new_path,'ab')as new_f: # 写入新文件
        c = 1024*100
        while 1:
            content = f.read(c)
            if not content:
                break
            new_f.write(content)

打开模式

打开模式效果
r以读方式打开,文件必须存在
w以写方式打开,文件不存在则创建,存在清空原有内容
a以追加模式打开,文件不存在则创建,存在则继续进行写操作
r+以读写模式打开 文件必须存在
w+以读写模式打开文件,不存在则创建,存在清空原有内容
a+追加并可读模式,文件不存在则创建,存在则继续进行写操作
rb以二进制读模式打开 同r
wb以二进制写模式打开 同w
ab以二进制追加模式打开 同a
rb+以二进制读写模式打开 同r+
wb+以二进制读写模式打开 同w+
ab+以二进制读写模式打开 同a+