Python实现删除windows下的长路径文件
背景
在Windows系统中,某些文件的路径可能超过260个字符的限制,这就被称为“长路径”。在文件名和路径中有许多Unicode字符时,这可能会变得很常见。通常,这样的文件是无法删除、复制、移动或操作的。然而,使用Python可以轻松地删除这样的长路径文件。
方案
对于Windows系统中的长路径文件,我们可以使用Python的shutil库和pathlib库来实现删除操作。具体步骤如下:
-
引入必要的库:
python
import shutil
from pathlib import Path -
设置长路径文件的路径:
python
folder = r"C:\very\long\path\to\folder\with\long\file"
long_path = Path(folder) -
递归查找并删除长路径文件:
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技术站