python——对文件夹及其文件的各种操作

一、遍历文件夹

1、概述

        os.walk和os.listdir都可以遍历文件夹

        os.listdir(path)函数返回指定路径下的所有文件和文件夹的名称列表,不包含子文件夹的内容

        os.walk(path)在以上基础上还可以遍历子文件夹中的内容,返回一个三元组(root, dirs, files),其中root表示当前遍历的文件夹路径,dirs表示当前文件夹下的子文件夹列表,files表示当前文件夹下的文件列表

        因此,如果需要遍历整个文件夹及其子文件夹中的内容,应该使用os.walk;如果仅需要获取当前文件夹下的文件和文件夹列表,可以使用os.listdir

2、os.listdir

import os

path = "/home/user/Documents"
files = os.listdir(path)

print(files)

# 输出结果为:['file1.txt', 'file2.docx', 'folder1', 'folder2']

3、os.walk

import os

path = "/home/user/Documents"

for root, dirs, files in os.walk(path):
    print("当前文件夹路径:", root)
    print("子文件夹列表:", dirs)
    print("文件列表:", files)

'''
输出结果为:
当前文件夹路径:/home/user/Documents
子文件夹列表:['folder1', 'folder2']
文件列表:['file1.txt', 'file2.docx']

当前文件夹路径:/home/user/Documents/folders1
子文件夹列表:[]
文件列表:['file3.txt']

当前文件夹路径:/home/user/Documents/folders2
子文件夹列表:['subfolder']
文件列表:['file4.docx']

当前文件夹路径:/home/user/Documents/folders2/subfolder
子文件夹列表:[]
文件列表:['file5.txt']

二、创建文件夹

1、概述

        os.mkdir:只能创建单层目录

        os.makedirs:可以创建多层目录

2、os.mkdir

import os

os.mkdir("D:/parent_folder")  # 在该路径创建文件夹
os.mkdir("D:/parent_folder/child_folder")  # 在刚刚创建的路径创建新的文件夹

3、os.makedirs

import os

os.makedirs("D:/parent_folder/child_folder")  # 直接创建多层目录

三、删除文件/文件夹

1、概述

        os.unlink:只能删文件

        os.remove:既可以删文件,也可以删空目录

        如果要删除非空目录,需要使用shutil.rmtree

2、os.remove

import os

folder_path = "/home/user/Documents"

# 列举出该文件夹下所有的文件名、空文件夹名
file_names = os.listdir(folder_path)

for file_name in files_name:
    file_path = os.path.join(folder_path, file_name)  # 拼接获取每个文件的绝对路径
    os.remove(file_path )

2、os.unlink、os.rmtree

import os
import shutil

# 封装一个函数:如果文件夹存在则清空文件夹,不存在则创建该文件夹
def creat_init_folder():

folder_path = "D:/local"

if os.path.exists(folder_path):  # 如果该路径存在
    for filename in os.listdir(folder_path):  # 遍历该文件夹下所有文件及子文件夹
        file_path = os.path.join(folder_path, filename)  # 拼接文件、子文件夹的绝对路径

        try:
            if os.path.isfile(file_path) or os.path.lslink(file_path):  # 如果绝对路径为文件或者软链接
                os.unlink(file_path)
            elif os.path.isdir(file_path):  # 如果绝对路径为文件夹
                shutil.rmtree(file_name)
        except Exception as e:
            print('Failed to delete %s. Reason: %s' % (file_path, e))
else:
    # 如果文件夹不存在,则创建文件夹
    os.mkdir(folder_path)

四、copy文件/文件夹

1、概述

        shutil.copy:只能复制文件

        shutil.copytree:复制整个目录,包括文件夹及文件

        shutil.move:剪切文件/文件夹

2、shutil.copy

import os
import shutil
import time

src_path = r"D:\Downloads"
dst_path = r"\\10.58.57.99\共享目录"

# 为了将源路径的所有文件(包括子文件夹的文件都取到),所有要用os.walk
# root:当前文件夹路径
# dirs:当前文件夹下的子文件夹列表
# files:当前文件夹下的文件列表
for root, dirs, files in os.walk(src_path):  # 遍历该路径及其子文件夹的所有路径
    for filename in files:
        # 拼接构造源文件与目标文件的绝对路径
        src_file = os.path.join(root, filename)  # 由于考虑了子目录,所以此处是root,不是src_path
        dst_file = os.path.join(dst_path, filename)

        shutil.copy(src_file, dst_file)
        time.sleep(2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值