速过计算机二级python——第六讲:文件操作

本文详细介绍了如何使用Python进行文件和文件夹操作,包括创建文件夹、移动文件夹、复制文件夹、删除文件夹,以及文件的读写、移动、复制、重命名和删除。主要涉及os和shutil模块,提供了具体函数的使用示例和操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

文件夹

创建文件夹

  1. 定义创建文件夹函数:chmk_path()

定义一个函数 chmk_path(),这个函数的功能是创建文件夹。
首先需要导入操作系统接口模块——os 模块,这个模块中包含某些函数可以帮助我们实现功能。
然后,函数应该包含两个形参:一个是文件夹路径 path,一个是文件夹名称 files。
最后,需要判断文件夹是否存在,如果存在,则将 Python 访问转移到此文件夹内(Python 访问转移的目的是为后面操作某文件夹内的文件做铺垫);如果不存在,则首先创建,再访问转移到此文件夹内。要完成上述操作,此处采用 try-except-异常处理。
其中,os.mkdir()是创建文件夹;os.chdir()是访问转移文件夹。

def chmk_path(path,files):
    import os
    try:
        os.chdir(path + files)
        print("文件夹:" + files + "存在,已转入此目录。")
    except:
        os.mkdir(path + files)
        os.chdir(path + files)
        print("文件夹:" + files + "不存在,已创建并转入此目录。")
  1. 调用 chmk_path()函数

定义一个变量名 path_name 作为形参 path 的实参,定义一个变量名files_name 作为形参 files 的实参。将 path_name 赋值为程序编写所在目录,将files_name 赋值为创建文件夹_,调用函数,将两个实参分别传入。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

上图分别为函数未运行之前、函数运行、函数再次运行之后的情形对比,发现在未运行之前,第 6 讲文件夹内只包含 4 个 py 文件,运行一次后,输出文件夹:创建文件夹_不存在,已创建并转入此目录;同时第 6 讲文件夹内多了一个创建文件夹_的文件夹。函数再次运行之后,输出文件夹:创建文件夹_存在,已转入此目录。

  1. 通过循环调用 chmk_path()函数,批量创建文件夹
    利用一个 for 循环一次性创建了创建文件夹_0~9 共 10 个文
    件夹。
    在这里插入图片描述
    在这里插入图片描述

移动文件夹

  1. 定义移动文件夹函数:move_path()

定义一个函数 move_path(),这个函数的功能是移动文件夹,根据函数功能描述,首先需要导入更高级的操作系统接口模块——shutil 模块,这个模块中包含某些函数可以帮助我们实现移动文件夹功能。然后,函数应该包含两个形参:一个是移动之前的原文件夹路径 oldpath,一个是移动之后的新文件夹路径 newpath。最后,注意新路径中一定不能包含被移动文件夹的同名文件夹。通过一个函数 shutil.move()即可实现所需操作。

def move_path(oldpath,newPath):
    import shutil
    shutil.move(oldpath,newPath)
    print("文件夹:" + oldpath + "移动成功~")
  1. 调用 move_path()函数

定义一个变量名 old_path_name 作为形参 oldpath 的实参,定义一个变量名new_path_name 作为形参 newpath 的实参。将 old_path_name 赋值为第 5 讲的程序文件夹,将 new_path_name 赋值为当前目录,即第 6 讲所编写的程序所在文件夹。调用函数,将两个实参分别传入。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

分别为函数未运行之前、函数运行、函数再次运行之后的情形对比,发现在未运行之前,第 6 讲文件夹内只包含 4 个 py 文件,运行一次后,输出文件夹:C:\Users\28256\Desktop\第五讲\移动成功~;同时第 6 讲文件夹内多了一个第 5 讲的文件夹。函数再次运行之后,由于文件夹已存在,程序报错。

  1. 通过循环调用 move_path()函数,批量移动文件夹

在这里插入图片描述

在这里插入图片描述

分别是未循环之前和循环之后的第 6 讲文件夹,我们利用一个 for 循环一
次性将第 1~4 讲文件夹也移动了进来。

复制文件夹

  1. 定义复制文件夹函数:copy_path()

定义一个函数 copy_path(),这个函数的功能是复制文件夹,根据函数功能描述,首先需要导入更高级的操作系统接口模块——shutil 模块,这个
模块中包含某些函数可以帮助我们实现复制文件夹功能。然后,函数应该包含两个形参:一个是复制之前的原文件夹路径 oldpath,一个是复制之后的新文件夹路径 newpath。最后,注意新路径中一定不能包含被复制文件夹的同名文件夹。通过一个函数 shutil.copytree()即可实现所需操作。

def copy_path(oldpath,newpath):
    import shutil
    shutil.copytree(oldpath,newpath)
    print("文件复制成功~")
  1. 调用 copy _path()函数

定义一个变量名 old_path_name 作为形参 oldpath 的实参,定义一个变量名new_path_name 作为形参 newpath 的实参。将 old_path_name 赋值为当前文件夹(第 6 讲)下第 5 讲的程序文件夹,将 new_path_name 赋值为文件夹。调用函数,将两个实参分别传入。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

函数未运行之前、上图为为函数运行之前、函数运行之后、函数再次运行之后的情形对比,发现在未运行之前,文件夹内只包含 1 个第 6 讲文件夹,运行一次后,输出文件夹:C:\Users\28256\Desktop\第6讲\第5讲\\复制成功~;同时 文件夹内多了一个第 5 讲的文件夹。函数再次运行之后,
由于文件夹已存在,程序报错。

  1. 通过循环调用 copy _path()函数,批量创建文件夹

在这里插入图片描述

在这里插入图片描述

删除文件夹

  1. 定义删除文件夹函数:delete_path()

定义一个函数 delete _path(),这个函数的功能是删除文件夹,根据函数功能描述,首先需要导入更高级的操作系统接口模块——shutil 模块,这
个模块中包含某些函数可以帮助我们实现删除文件夹及其内部所有文件的功能。然后,函数应该包含一个形参:待删除文件夹路径 delete_path。通过一个函数shutil.rmtree()即可实现所需操作。

def delete_path(delete_path):

    import shutil
    shutil.rmtree(delete_path)
    print("文件夹:" + delete_path + "删除成功!")
  1. 调用 delete _path()函数

定义一个变量名 delete_path_name 作为形参 delete_path 的实参。将
delete_path_name 赋值为当前文件夹(第 6 讲)下第 5 讲的程序文件夹。调用函数,将实参传入。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上图为函数未运行之前、函数未运行之后、函数再次运行之后的情形对比,发现在未运行之前,文件夹内包含第5 讲文件夹,运行一次后,输出文件夹:C:\Users\28256\Desktop\第6讲\第5讲\删除成功;同时第 5 讲文件夹内被删除。函数再次运行之后,由于文件夹已存在,程序报错。

  1. 通过循环调用 delete _path()函数,批量创建文件夹
    在这里插入图片描述

利用一个 for 循环一次性将第 1~4 讲文件夹也删除了。

文件

操作文件

  1. 创建、写入、关闭文件
    (1)方法一:open()

在定义好路径和文件名之后,直接以”w”模式(写入模式)的 open()函数打开文件,然后使用 write()函数写入字符串,最后使用 close()关闭文件以减少内存占用。整个逻辑很清晰:创建并打开、写入、关闭。

path = r"C:\Users\28256\Desktop\\"
f = "创建.txt"

fo = open(path + f,"w")
fo.write("Python与电脑文件交互学习中……")
fo.close()

在这里插入图片描述

(2)方法二:with open() as …

在定义好路径和文件名之后,以”w”模式(写入模式)的 open()函数打开文件,然后在缩进下使用 write()函数写入字符串。整个逻辑很清晰:创建并打开、写入。与方法一的区别在于,这个方法不需要关闭文件,内存自动释放。

path = r"C:\Users\28256\Desktop\新建文件夹\\"
f = "创建.txt"

with open(path + f,"w") as fo:
    fo.write("Python与电脑文件交互学习中……")

在这里插入图片描述

  1. 移动文件

导入 shutil 模块,使用 move()函数,注意路径中的斜杠全部为两条。可以看到文件——创建.txt,被移动到了 17 讲_程序文件夹中。

# 移动文件
import shutil
shutil.move("C:\\Users\\28256\\Desktop\\新建文件夹\\创建.txt",
            "C:\\Users\\28256\\Desktop\\")

在这里插入图片描述

  1. 复制文件

导入 shutil 模块,使用 copy()函数,注意路径中的斜杠全部为两条。可以看到文件——创建.txt,被从 17 讲_程序文件夹中移动到了当前文件夹。

#复制文件
import shutil
shutil.copy("C:\\Users\\28256\\Desktop\\创建.txt",
            "C:\\Users\\28256\\Desktop\\新建文件夹\\创建.txt")

在这里插入图片描述

  1. 重命名文件

导入 os 模块,使用 rename()函数,注意路径中的斜杠全部为两条。可以看到文件——创建.txt,被重命名为了重命名.txt。

#重命名文件
import os
os.rename("C:\\Users\\28256\\Desktop\\新建文件夹\\创建.txt",
          "C:\\Users\\28256\\Desktop\\新建文件夹\\重命名.txt")

在这里插入图片描述

  1. 删除文件

导入 os 模块,使用 remove()函数,注意路径中的斜杠全部为两条。可以看到文件——重命名.txt 被删除了。

# 删除文件
import os
os.remove("C:\\Users\\28256\\Desktop\\新建文件夹\\重命名.txt")

在这里插入图片描述

读取文件

读取文件有三种方式,read()和 readlines()最为常用,readline()在内存有限的情况下用。

txt文件:

中文:我爱你
English:I love you
Français:Je t'aime
  1. read()

使用 read()函数输出文本结果是整个文件的字符作为一个字符串。其中第 5 行的”r”的意思是以读入模式打开文件,encoding=”UTF-8”的含义是以这种编码方式进行解码,如果你发现不加这个短语运行出错时,那么就加上。

path = r"C:\\Users\\28256\\Desktop\\新建文件夹\\6\\"
f_read = "示例-读取.txt"

#read
with open(path+f_read, 'r', encoding='UTF-8') as f_r:
    lines = f_r.read()
    print(lines)         #输出所读内容
    print(type(lines))   #输出所读内容数据类型

在这里插入图片描述

  1. readlines()

使用 readlines()函数输出文本结果是整个文件作为一个列表,每一行作为列表中的一个元素。

#readlines()
with open(path+f_read, 'r', encoding='UTF-8') as f_r:
    line = f_r,f_r.readlines()
    print(line)           #输出所读内容
    print(type(line))     #输出所读内容数据类型

在这里插入图片描述

  1. readline()

使用 readline()函数输出文本结果是“下”一行字符串,每输出一行同时带有一个换行。如果要实现逐行输出,则可以加一个 while 循环;如果实现空行消失,那么加一个 end=””。

#readline()\
with open(path+f_read, 'r', encoding='UTF-8') as f_r:
    line = f_r.readline()
    print(line)
    print(type(line))

在这里插入图片描述

#readline()
with open(path+f_read, 'r', encoding='UTF-8') as f_r:
    line = f_r.readline()
    print(type(line))
    while line:
        print(line)
        line = f_r.readline()

在这里插入图片描述

写入文件

现在的第一个小任务是将示例-读取.txt 中的内容,将其完整地写入一个叫做示例-写入.txt 的文件中。

在这里插入图片描述

根据需要选用最为合适的 read()函数,配合创建文件和写入函数write()函数。

#写入文件
path = r"C:\Users\28256\Desktop\新建文件夹\6\\"
f_read = "示例-读取.txt"
f_write = open(path + "示例-写入.txt", "w", encoding='UTF-8')
with open(path+f_read, "r", encoding='UTF-8') as f_r:
    lines = f_r.read()
    print(lines)
    f_write.write(lines)

在这里插入图片描述

现在第 2 个小任务是在任务 1 的基础上,在示例-写入.txt 文件中写入示例读取.txt 中的内容有几行,根据需要我们选用 read()函数和 readlines()函数。

#写入文件
path = r"C:\Users\28256\Desktop\新建文件夹\6\\"
f_read = "示例-读取.txt"
f_write = open(path + "示例-写入.txt", "w", encoding='UTF-8')
with open(path+f_read, "r", encoding='UTF-8') as f_r:
    lines = f_r.read()
    print(lines)
    f_write.write(lines)


#写入文件内容行数
f_write = open(path + "示例-写入.txt", "a", encoding='UTF-8')
with open(path+f_read, "r", encoding='UTF-8') as f_r:
    lines = f_r.readlines()
    f_write.write("\n\n文件内容共有{}行".format(len(lines)))

在这里插入图片描述

第 12 行的”a”是以 add 追加模式打开文件进行写入,是在原有内容的基础上进行写入;第 14 行采用了 readlines()函数,因为它返回的是一个以每行内容作为元素的列表,便于计算行数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值