首页 > 编程语言 >python 创建、拷贝、移动、删除、遍历文件和文件夹

python 创建、拷贝、移动、删除、遍历文件和文件夹

时间:2023-05-26 13:44:04浏览次数:39  
标签:__ src 遍历 target python 文件夹 path folder os

python 创建、拷贝、移动、删除、遍历文件和文件夹

1、创建文件夹

import os


def create_folder(folder: str):
    folder = os.path.abspath(folder)
    if not os.path.exists(folder):
        try:
            os.makedirs(folder)
            print(f"创建了文件夹:{folder}")
        except FileExistsError:
            print(f"文件夹已存在, 无需创建:{folder}")
        except Exception as e:
            msg = f"创建文件夹失败, folder:{folder}, e:{e}"
            print(msg)


def main():
    create_folder('A')


if __name__ == '__main__':
    main()

2、拷贝文件夹

import os.path
import shutil


def copy_folder(src: str, target: str):
    # 如果target是已存在的目录 则抛出FileExistsError异常
    # 如果target是已存在的文件 则抛出FileExistsError异常
    # 如果target不存在, 则拷贝
    src = os.path.abspath(src)
    target = os.path.abspath(target)
    try:
        shutil.copytree(src, target)
        print(f"拷贝文件夹成功, src:{src}, target:{target}")
    except FileExistsError as e:
        print(f"由于target已存在, 导致拷贝文件夹失败, src:{src}, target:{target}, e:{e}")
    except Exception as e:
        print(f"拷贝文件夹失败, src:{src}, target:{target}, e:{e}")


def main():
    copy_folder("A", 'C')


if __name__ == '__main__':
    main()

3、移动文件夹

import os.path
import shutil


def mv_folder(src: str, target: str):
    # 如果target是已存在的目录, 则移动src到该target目录下 target中出现同名的src文件夹
    # 如果target是已存在的文件 则抛出FileExistsError异常
    # 如果target不存在, 则重命名src为target 相当于移动
    src = os.path.abspath(src)
    target = os.path.abspath(target)
    try:
        shutil.move(src, target)
        print(f"移动文件夹成功, src:{src}, target:{target}")
    except FileExistsError as e:
        print(f"由于target已存在, 导致移动文件夹失败, src:{src}, target:{target}, e:{e}")
    except Exception as e:
        print(f"移动文件夹失败, src:{src}, target:{target}, e:{e}")


def main():
    mv_folder("A", 'B')


if __name__ == '__main__':
    main()

4、删除文件夹

import os.path
import shutil


def rm_folder(folder: str):
    folder = os.path.abspath(folder)
    if os.path.isdir(folder):
        try:
            shutil.rmtree(folder)
            print(f"删除文件夹成功, folder:{folder}")
        except FileNotFoundError as e:
            print(f"文件夹不存在, 无需删除, folder:{folder}, e:{e}")
        except Exception as e:
            print(f"删除文件夹失败, folder:{folder}, e:{e}")


def main():
    rm_folder("A")


if __name__ == '__main__':
    main()

5、拷贝文件

import os
import shutil


def copy_file(src: str, target: str):
    # 如果target是一个已存在的文件, 则覆盖文件内容
    # 如果target是一个已存在的文件夹, 则拷贝src到文件夹中, target文件夹中多一个src文件 如果target中存在同名src文件 则覆盖
    src = os.path.abspath(src)
    target = os.path.abspath(target)
    if os.path.isfile(src):
        try:
            shutil.copy2(src, target)
            print(f"拷贝文件成功, src:{src}, target:{target}")
        except Exception as e:
            print(f"拷贝文件失败, src:{src}, target:{target}, e:{e}")


def main():
    copy_file('a.txt', 'a.txt')


if __name__ == '__main__':
    main()

6、移动文件

import os.path
import shutil


def mv_file(src: str, target: str):
    # 如果target是一个已存在的文件, 则覆盖文件内容
    # 如果target是一个已存在的文件夹, 则移动src到文件夹中, target文件中多一个src文件 如果target中存在同名src文件 则覆盖
    src = os.path.abspath(src)
    target = os.path.abspath(target)
    if os.path.isfile(src):
        try:
            shutil.move(src, target)
            print(f"移动文件成功, src:{src}, target:{target}")
        except FileExistsError as e:
            print(f"由于target已存在, 导致移动文件失败, src:{src}, target:{target}, e:{e}")
        except Exception as e:
            print(f"移动文件失败, src:{src}, target:{target}, e:{e}")


def main():
    mv_file('a.txt', 'b.txt')


if __name__ == '__main__':
    main()

7、删除文件

import os.path


def rm_file(filename: str):
    filename = os.path.abspath(filename)
    if os.path.isfile(filename):
        try:
            os.remove(filename)
            print(f"删除文件成功, filename:{filename}")
        except FileNotFoundError:
            print(f"无需删除不存在的文件, filename:{filename}")
        except Exception as e:
            print(f"删除文件失败, filename:{filename}, e:{e}")


def main():
    rm_file("a.txt")


if __name__ == '__main__':
    main()

8、遍历文件夹

功能

python遍历目录,获取上N层的文件,例如获取第一层,第二层,第三层的文件。

代码

path表示要遍历的文件夹路径

n表示要获取的层数 必须是大于0的整数 默认9999 默认获取所有层数(应该层数不会大于9999吧)

import os


def traverse_folder(path: str, n: int = 9999):
    path = os.path.abspath(path)
    assert os.path.isdir(path)
    assert n > 0
    all_files = []
    all_dirs = []
    for root, dirs, files in os.walk(path):
        for one_file in files:
            all_files.append(os.path.join(root, one_file))  # 所有文件
        for one_dir in dirs:
            all_dirs.append(os.path.join(root, one_dir))  # 所有文件夹

    path_split = path.split(os.sep)
    len_path_split = len(path_split)

    need_dir = []
    for d_name in all_dirs:
        dir_split = d_name.split(os.sep)
        dir_split_ = dir_split[len_path_split:]
        if len(dir_split_) <= n:
            need_dir.append(d_name)

    need_files = []
    for f_name in all_files:
        f_name_split = f_name.split(os.sep)
        f_name_split_ = f_name_split[len_path_split:]
        if len(f_name_split_) <= n:
            need_files.append(f_name)

    return need_dir, need_files


if __name__ == '__main__':
    d, f = traverse_folder("..", 3)
    for i in d:
        print(i)
    print("-" * 50)
    for i in f:
        print(i)

运行

目录结构

image-20230512152113192

运行结果

image-20230512152147124

标签:__,src,遍历,target,python,文件夹,path,folder,os
From: https://www.cnblogs.com/rainbow-tan/p/17434496.html

相关文章

  • 如何优化Python爬虫的速度?
    Python爬虫慢的原因有很多,网络延迟高、爬取数据量过大、爬虫程序设计问题、不合理的请求头设置、Python解释器性能问题等都是制约爬虫速度的重要因素。总之,在遇到Python爬虫慢的问题时,需要详细了解可能出现的原因,并根据具体情况进行相应的调整和改进,保证程序的稳定性和效率。......
  • python 自动化 selenium 入门
    Selenium创建基于浏览器的强大回归自动化套件和测试。而要控制和驱动实际的浏览器浏览器,需要下载与浏览器对应品牌和版本的WebDriver驱动程序。比如chrome和edge浏览器分别对应:chromedriver.exe和msedgedriver.exe如果你不想手动下载,也可以安装webdriver-manager自动......
  • 如何优化Python爬虫的速度?
    Python爬虫慢的原因有很多,网络延迟高、爬取数据量过大、爬虫程序设计问题、不合理的请求头设置、Python解释器性能问题等都是制约爬虫速度的重要因素。总之,在遇到Python爬虫慢的问题时,需要详细了解可能出现的原因,并根据具体情况进行相应的调整和改进,保证程序的稳定性和效率。以......
  • 如何用python的pysmb模块,下载smb服务器上的以deb结尾文件?
    需求:如何用python的pysmb模块,下载smb服务器上的以deb结尾文件?服务器在192.168.9.5扩展需求:有时候,也会下载以xxx开头的文件。实现方式:#!/usr/bin/envpython#-*-coding:utf-8-*-#安装依赖模块:pipinstallpysmbfromsmb.SMBConnectionimportSMBConnec......
  • 分享Python采集77个焦点图,总有一款适合您
    Python采集的77个焦点图下载链接:https://pan.baidu.com/s/1DwOhWYWWRYHnAy-ZwWBTmg?pwd=xj5a提取码:xj5ajQuery全屏背景跟随手风琴图片切换特效HTML5焦点图片波浪过渡效果切换动画特效jQuery+HTML53D折页图片切换特效jQuery图片手风琴滑动展开特效jQuery点击右侧按钮图片滑动切换......
  • python 名称空间与作用域(笔记整理)
    一、名称空间什么是名称空间:名称空间就是存放变量名和变量值绑定关系的地方就是内存地址在程序执行期间最多会存在三种名称空间:内置名称空间:是Python解释器默认预定义大量内置函数和内置异常的名称空间,就是存放解释器自带函数方法的名称空间可以通过dir(builtins)来......
  • 01.初识Python
    本教程计划通过100天的时间,每天分享一篇关于python的知识点,与大家一起学习python这门编程语言。Python对初学者来说是一门很棒的语言:容易学有一个积极的支持社区在网络开发、游戏、数据科学方面提供多种机会。Python的应用领域目前Python在Web应用开发、云基础设施、De......
  • python 函数的参数(笔记整理)
    一、形参与实参介绍函数的参数分为形式参数和实际参数:简称形参和实参在定义函数阶段依次填写的参数名字,称为:形式参数(也称为形参)作为函数的输入,以便在函数内部进行处理。而在调用函数阶段,函数名括号中需要传入具体的值作为实际参数(也称为实参),这些实参会被赋值给函数中的形参,......
  • python 创建、拷贝、移动、删除文件和文件夹
    python创建、拷贝、移动、删除文件和文件夹1、创建文件夹importosdefcreate_folder(folder:str):folder=os.path.abspath(folder)ifnotos.path.exists(folder):try:os.makedirs(folder)print(f"创建了文件夹:{folder}"......
  • 基于 python 的 nexus 私服 jar 包匹配查找程序
    程序通过计算jar包的sha1摘要,到maven仓库查询对应路径,适用于NexusRepositoryManagerOSS2.14.11-01,其他版本未做测试注意:jar包路径中不要出现空格#!/usr/bin/python3importhashlibimportosimportrequestsimportsysimporttempfilefromxml.etreeimport......