Python实现删除windows下的长路径文件

Python实现删除windows下的长路径文件

背景

在Windows系统中,某些文件的路径可能超过260个字符的限制,这就被称为“长路径”。在文件名和路径中有许多Unicode字符时,这可能会变得很常见。通常,这样的文件是无法删除、复制、移动或操作的。然而,使用Python可以轻松地删除这样的长路径文件。

方案

对于Windows系统中的长路径文件,我们可以使用Python的shutil库和pathlib库来实现删除操作。具体步骤如下:

  1. 引入必要的库:
    python
    import shutil
    from pathlib import Path

  2. 设置长路径文件的路径:
    python
    folder = r"C:\very\long\path\to\folder\with\long\file"
    long_path = Path(folder)

  3. 递归查找并删除长路径文件:
    python
    for path in long_path.glob('**/*'):
    try:
    print("Deleting {}".format(path.name))
    path.unlink()
    except Exception as e:
    print("Error deleting {} : {}".format(path.name, e))

示例

假设我们有一个名为“C:\very\long\path\to\folder\with\long\file”的文件夹,其中包含了一个长路径文件“C:\very\long\path\to\folder\with\long\file\this\is\a\very\long\path\to\a\file\with\long\name.txt”,现在我们要删除这个文件,可以使用以下Python代码:

import shutil
from pathlib import Path

folder = r"C:\very\long\path\to\folder\with\long\file"
long_path = Path(folder)

for path in long_path.glob('**/*'):
    try:
        print("Deleting {}".format(path.name))
        path.unlink()
    except Exception as e:
        print("Error deleting {} : {}".format(path.name, e))

代码执行后,输出如下:

Deleting file_with_long_name.txt
Deleting with
Deleting to
Deleting path
Deleting very
Deleting long
Deleting file
Deleting a
Deleting this
Deleting is
Deleting folder
Deleting C:
Deleting  \very
Deleting long
Deleting path
Deleting to
Deleting folder
Deleting with
Deleting long
Deleting file

整个目录都被删除了,因为我们使用了递归搜索方式,删除了长路径文件之上的所有文件。

另一个示例,如果要删除“C:\very\long\path\to\folder\with\long\file\this\is\a\very\long\path\to\a\folder\with\long\name”这个文件夹,可以参考以下Python代码:

import shutil
from pathlib import Path

folder = r"C:\very\long\path\to\folder\with\long\file"
long_path = Path(folder)

for path in long_path.glob('**/*'):
    try:
        if path.is_dir():  # 判断是否为目录
            path.rmdir()   # 删除目录
            print("Deleting folder {}".format(path))
        else:
            path.unlink()  # 删除文件
            print("Deleting file {}".format(path))
    except Exception as e:
        print("Error deleting {} : {}".format(path, e))

输出结果:

Deleting folder C:\very\long\path\to\folder\with\long\file\this\is\a\very\long\path\to\a\folder\with\long\name

总结

Python提供了许多库用于操作文件系统,使用pathlib库可以轻松地管理文件路径,使用shutil库可以复制、移动、删除文件和文件夹。上述方法可以在Windows系统上安全地删除长路径文件,有效避免了由于路径过长而无法完成操作的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现删除windows下的长路径文件 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • python3 正则表达式基础廖雪峰

    Python3正则表达式基础 正则表达式是一种用于描述字符串模式的语言,可以用于配、查找、替换和分割。在Python中,可以使用re模块来使用正则表达式。本文将详细介绍Python中正则表达式的语法、字符集、转义字符以及常用函数,并提供两个示例说明。 基本语法 正则表达式由普通字符和元成,普字符表示本身,而元字符则有特殊的含义。下面是一些常用元字符: .:匹…

    python 2023年5月14日
    00
  • 如何在Python中进行Breusch-Pagan测试

    Breusch-Pagan (BP)测试是一种用于检验线性回归模型误差是否存在异方差性的方法。在Python中,我们可以使用statsmodels包中的函数完成BP测试。下面是如何在Python中进行BP测试的完整攻略: 1. 引入库和数据集 首先,我们需要引入需要的库和数据集。依次使用以下代码引入所需的库和数据集: import pandas as pd …

    python-answer 2023年3月25日
    00
  • Python与Appium实现手机APP自动化测试的示例代码

    下面是Python与Appium实现手机APP自动化测试的完整攻略: 1. 准备工作 1.1 安装Appium Appium是一款用于移动应用程序自动化测试的工具,我们可以到 Appium官网 上下载安装包并进行安装。 1.2 安装Appium-Python-Client Appium-Python-Client是Python中与Appium交互的库,我们可…

    python 2023年6月6日
    00
  • python实现PDF中表格转化为Excel的方法

    以下是详细讲解如何用Python将PDF中的表格转换为Excel的完整实例教程。 教程概述 本教程将介绍如何使用Python和一些相关的库,将PDF中的表格转换为Excel文件。主要使用了以下库: tabula-py:用于提取PDF中的表格数据。 pandas:用于将提取的表格数据转换为Excel文件。 步骤说明 在开始这个实例之前,请确保你已经按照以下步骤…

    python 2023年5月14日
    00
  • python中的变量命名规则详情

    下面是详细讲解“Python中的变量命名规则详情”的完整攻略。 Python中的变量命名规则详情 在Python中,变量名可以包含字母、数字、下划线,但是变量名不能以数字开头。此外,Python是一种大小写敏感的语言,因此变量名apple和Apple是不同的。另外,Python有一些保留字,这些保留字不能作为变量名,比如if、while、with等。 Pyt…

    python 2023年5月18日
    00
  • python实现多线程采集的2个代码例子

    下面是详细的攻略: Python实现多线程采集 前言 对于一些需要收集数据的任务,并发的采集方式无疑是对效率的一大提升。Python语言提供了多线程编程的支持,本文将会介绍两种使用Python实现多线程采集的方式并提供相应的代码。 代码实现 代码一 第一种实现方式相对来说比较简单理解,我们可以直接使用Thread类来创建新的线程并运行。 import thr…

    python 2023年5月19日
    00
  • Python scrapy爬取起点中文网小说榜单

    Python Scrapy 爬取起点中文网小说榜单完整攻略 1. 爬取起点中文网小说榜单的网址 首先,我们需要知道起点中文网小说榜单的网址。通过分析起点中文网小说榜单页面,我们可以得知榜单的网址为:https://www.qidian.com/rank/yuepiao。 2. 安装Scrapy Scrapy是一个Python的爬虫框架,我们需要先安装它。 p…

    python 2023年5月14日
    00
  • python 如何用 Hypothesis 来自动化单元测试

    下面是关于使用 Hypothesis 自动化单元测试的完整攻略。 什么是 Hypothesis? Hypothesis 是一个基于属性推理(property-based)的 Python 测试框架,它使用了随机数据生成器和“假设”(assumptions)来创建、执行和简化测试。该框架允许你只编写一小部分的测试用例,就能发现许多边缘情况和隐含错误。 安装 H…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部