python学习笔记第三天

1. 文件操作概述及操作过程

文件作用:进行持久化存储数据

操作过程:

双击打开

点叉关闭

程序操作文件的过程:

打开-> 设置打开的模式,(读写) open(打开文件路径,打开模式)

操作文件(读取、写入、删除)

关闭-> close()

2. 文件的访问模式

读取:

文本形式

程序文件

.txt 文件

.rtf 文件

二进制形式

音频文件

视频文件

图片文件

写入:

文本形式

程序文件

.txt 文件

.rtf 文件

二进制形式

音频文件

视频文件

图片文件

以文本方式打开方式的模式

r -> rt -> read text 以文本方式打开文件读,文件存在,打开成功,文件不存在,打开失败

w -> wt -> write text 以文本方式打开文件写,不管文件是否存在,都会新创建一个新文件

a -> at -> append text 以文件方式打开文件追加,文件不存在,创建文件,文件存在,那么打开文件

然后将光标移动到文件的最后

以二进制形式打开文件的模式

rb 以二进制形式打开文件读取

wb 以二进制形式打开文件写入

ab 以二进制形式打开文件追加

这三种模式都具有读取写入功能

r+ 和 w+ 都可以读可以写,但是r+找不到文件会报错,w+会创建文件

r+是追加w+是覆盖

r+光标默认在开头

w+光标默认在结尾

a+在末尾写入内容如果文件不存在则创建文件写入,光标默认在结尾

3. 文件的读取

read()

4. 文件读取的几种方式

read() # 一次性将整个文件内容读取出来,不适合大文件读取

read(size) # 掌握 读取指定的字节数的文件内容 ,如果文件最后没有内容了,那么read的返回值是空字符串 ,b ""或"" 一般指定4096

readline() # 读取一行

readlines() # 一次性将整个文件内的内容以行的形式读取出来,放到一个列表中

5. 文件的写入

write(content) 该函数用来向文件中写入数据

前提: 使用该函数时,打开文件时,必须要给定写入权限,要具有写入模式

6. 常用文件和文件夹操作

在日常使用os模块导入文件时要十分注意工作路径和导入文件是否在同一目录下

使用文件操作需要导入os 模块,以下是文件操作的一些函数

路径操作

getcwd.() 获取当前工作目录的绝对路径

os.path.abspath("file.py") 获取文件的绝对路径

os.path.relpath("file.py",start) 获取文件的相对路径 stat表示相对对象

rename()重命名文件

exists(path) 如果 path 文件或文件夹存在返回 True,否则返回 False;

isabs(path) path 是绝对路径返回 True,否则返回 False;

isdir(path) path 是文件夹返回 True,否则你懂;

isfile(path) path 是文件返回 True。

文件操作

os.path.getsize("demo4.py") 获取文件大小

remove() 删除文件

mkdir() 创建文件

chdir() 切换到目录

rmdir() 删除目录

shutil.copy(旧文件,新文件) 复制文件

shutil.copytree("旧目录","新目录") 复制目录

shutil.move(旧文件,新文件) 移动文件

7. 翻车点:

当以二进制模式打开文件进行文件操作时.

read 函数最终读取文件内容为空时,返回的结果为 b''

表示是一个二进制的空字符串

在 Python2.7版本中. '' == b'' 结果为True

在 Python3.6版本中. '' == b'' 结果为False

在 Python3.6版本中使用b'' 作为二进制空字符

作业复制多个文件并改名涉及文件操作先导入os库

import os

 主要程序结构导入源文件和目标文件并向函数传参

src =r'D:/data/v'
dst=r'D:/data/v_bak'
muilt_file_copy(src,dst)

构造复制文件的函数:

        函数需要两个参数,一个源文件夹src,一个目标文件夹dst

        对于文件读取操作需要先跳转到文件目录再进行

#获取当前工作目录
print(os.getcwd())
#切换到源文件目录中
os.chdir(src)

读取所有源文件信息

创建目标文件夹

    #读取所有源文件信息
    file_list=os.listdir(src)
    # print(file_list)

    #创建目标文件夹
    os.mkdir(dst)

由于是多个文件所以采用循环来进行

    #循环读取文件次数
    #遍历每个文件
    n=0
    for file in file_list:
        n+=1
        #对源文件名进行字符串连接
        dst_file = dst+'/'+'性感阿刁在线跳舞'+ file
        #分别以读、写方式打开源文件和目标文件
        file_r=open(file,'rb')
        file_w=open(dst_file,'wb')
        while True:
            #一次读取1024字节
            content = file_r.read(1024)
            #打开文件使用的是二进制模式打开,所以在判断结束时需要判断是否是二进制的空字符
            if content==b'':
                print(f'第{n}个文件{file}复制成功,改名为{dst_file},进度:{round(100*n/len(file_list),2)}%')
                # 复制成功关闭文件跳出循环
                file_r.close()
                file_w.close()
                break
            file_w.write(content)
    else:
        print(f'一共复制了{len(file_list)}个文件')

反复运行会报错是因为目标文件夹已存在,需要把目标文件夹删除,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值