孙兴华《中文讲Python从入门到办公自动化》笔记(二)--文件和文件夹

1 文件的操作(打开、读写、关闭)

1.1 访问模式

 总结:

1、访问模式(三个主访问模式)

'r' : 只读(当不指定访问模式时,默认该模式):如果文件不存在报错,不支持写

'w' :写入:如果文件不存在则新建文件,写入时覆盖原有内容

'a' : 追加: 如果文件不存在则新建文件,写入时在原有内容基础上追加新内容

2、访问模式特点('b':二进制,'+':可读可写)

r、rb、r+、rb+  :如果文件不存在报错,文件指针在文件开头

w、wb 、w+、 wb+ :如果文件不存在则新建文件,覆盖,文件指针在文件开头

a 、ab、 a+、 ab+ : 如果文件不存在则新建文件,追加,文件指针在文件结尾

1.2 文件打开

文件对象 = open('文件名','访问模式')

1.3 文件读写

文件对象.write(string )

string 表示要写入文件的字符串(或字节串,仅适用写入二进制文件中)。

a=open("text.txt",'w')

a.write("""aaa
bbb
ccc
ddd
""")

如果文件内容是中文的,在打开文件时加上参数encoding='UTF-8'

file2 =open("textZH.txt",'w',encoding='UTF-8')

文件对象.read(num) 

num表示从文件中读取数据的长度(单位字节),\n占一个字符,省略就表示读取所有数据

文件对象.readlines() 

需要赋值给一个变量

将整个文件中的内容一次性读取,并返回一个列表,原文件中每一行数据为一个元素。例如['aaa\n','bbb\n','ccc']。每一行都有换行自带\n,最后一行没有换行不带\n

文件对象.readline() 

需要赋值给一个变量

一次性读取一行内容,第一次调用读取第一行,第二次调用读取第二行...不带换行符\n

1.3 文件关闭

文件对象.close()

1.4 移动指针

文件对象.seek(偏移量,起始位置)

偏移量:假设起始位置是开头,偏移量是5,那文件指针就在第6个字节上

起始位置:0开头,1当前位置,2文件结尾

偏移量和起始位置都为0 时,可以只写一个0

例如已有文件:

a=open("text.txt",'r')
a.seek(7,0)
print(a.read())

a.close()

读取结果

 2 文件备份

文件备份的步骤:

步骤1:用户输入目标文件,

file =  input('请输入您要备份的文件名:')   

步骤2:截取目标文件名并拼接出备份文件的名字

2.1) 提取后缀,找到名字中最右侧的点.

2.2)  拼接新备份文件的名字 = 原名字+[备份]+后缀

步骤3:备份文件写入数据(将原文件内容复制到备份文件)

3.1) 打开原文件和备份文件

3.2) 原文件读取,新文件写入。如果不确定目标文件的大小,循环读取固定大小进行写入,当读取结果为0时,读取结束。

步骤4:关闭文件

def fileBackup():
    #1、确定要备份的文件名
    fileName = input("请输入要备份的文件名:")

    #2、截取目标文件名并拼接出备份文件的名字
    dotPlace = fileName.rfind('.') #与find()功能相同,但查找方向为右侧开始,找到最右边点的位置
    print(dotPlace)
    if dotPlace > 0 :
        suffix = fileName[dotPlace:]  #点到最后为后缀名
        print(suffix)
    else:
        print('文件名输入错误')
    #拼接备份文件的新名字
    backupFileName = fileName[:dotPlace] + "_备份_" + suffix
    print(backupFileName)

    #3、将原文件的内容分批写入备份文件
    oldFile = open(fileName,'rb')
    backupFile = open(backupFileName,'wb')
    while True:
        data = oldFile.read(2048)
        print(data)
        print(type(data))
        if len(data) == 0: #当读取数据为0时,读完了终止循环
            break
        backupFile.write(data)
    oldFile.close()
    backupFile.close()


if __name__ == "__main__":
    fileBackup()

3 文件和文件夹操作

文件和文件夹操作需要导入 os 模块,使用模块的相关方法。import os

3.1 文件和文件夹重命名

os.rename('旧文件名', '新文件名')  #目标文件名可以写路径,否则默认当前文件夹下面

os.rename('旧文件夹名', '新文件夹名')

3.2 删除文件和文件夹

os.remove(目标文件名)

没有指定文件会报错,不能删文件夹

os.rmdir(文件夹名字)

没有指定文件夹会报错

3.3 创建文件夹

os.mkdir(文件夹名字)

重复创建相同名字的文件夹报错

3.4 获取当前文件所在目录路径

os.getcwd()

3.5 改变默认目录

os.chdir(目录)    :用于改变当前工作目录到指定的路径

例如在文件夹aa目录下创建bb目录:

os.chdir('aa')

os.mkdir('bb')

3.6 获取某个文件夹下所有文件和文件夹的名称

os.listdir(目录)  :返回指定文件夹下所有文件和文件夹的名称,不写目录即为当前文件夹下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值