Python解决超长文件路径的文件的复制、删除

摘要:
Python解决了复制和删除具有长文件路径的文件的另一个问题。在编写简单的文件备份脚本时,请使用shutil。复制文件时发生Nosuchfiler错误。首先,我查询了Windows下文件路径的最大长度。结果是260。这在大多数情况下已经足够了,但文件路径长的问题仍然存在。然后我看到了UNC的定义。Windows下文件路径的最大长度可以超过30000。我记不清有多少了。

Python解决超长文件路径的文件的复制、删除

今天又遇到一个问题,在写一个简单的文件备份的脚本中,使用shutil.copyfile的时候出现了No such file or dir的错误。我排查了一遍之后,发现是文件路径太长了导致Windows下不能查询到文件,也就无从谈起了复制,移动,删除等文件操作了。

经过一番查找之后,发现了两个解决方法:

1、缩减文件路径的长度,在python的pywin32模块中有win32api的GetShortPathName这个函数,这个函数可以把你的非常长的路径给改变,路径长度自然变小了。然而路径名称也被改变了,实际应用的意义不大(因为有些文件夹的名称虽然很长,但它都有自己代表的意义,不能轻易的更改)。(这个函数这里提出来只是为了对于那些批量处理的文件来说的,如果是少量的文件还不如自己手动更改路径)

2、这个解决方法是想办法告诉电脑我的路径长度很长。首先我查询了windows下文件路径的最大长度是多少,查到的结果是260.这对于绝大多数情况都足够用了,但是文件路径长的问题还是存在的。然后就看到了UNC的定义,原来windows下的文件路径的长度最大可以是3万多的长度,具体多少记不清了哈哈哈。只要在绝对路径的前面加上“\?就能告诉计算机我需要使用最大的路径长度,这样就不会出现路径太长而导致的无法操作的问题了。

对于第二种解决方案,还存在一个问题,对于共享计算机目录下该怎么操作呢,因为我们知道,在共享目录下你访问其他电脑的文件的方式都是\+计算机名+路径(例如\hexiaoqitest),对于这样的目录你如果前面直接加\?是会报错的。因为无法正确解析路径。那么对于这种情况应该怎么操作呢?在共享路径前面加上\UNC这样就ok了,注意这样拼接的时候需要对把共享计算机的前面的\去掉。此处举一个例子(\?UNChexiaoqitest)。

遇到这种问题真的难受,本来一个小脚本认为不可能出错的,结果又花费了半天时间搞这个。绝望.jpg。

免责声明:文章转载自《Python解决超长文件路径的文件的复制、删除》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇hackinglab CTF题 基础关Lua5.1中的API函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python中count函数的用法

Python count()方法 描述 Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。 count()方法语法: str.count(sub, start= 0,end=len(string)) 参数 sub -- 搜索的子字符串 start -- 字符串开始搜索的位置。默认为第一个字符,第一...

查看IP和MAC地址的命令

[基于MS]查看MAC地址命令: 1、使用ipconfig /all,可以看到具体配置。(查看IP地址,网关,DNS MAC地址等) 2、如果和局域网中的其它计算机通信过的话,可以用arp -a命令查看其MAC地址。 3、另外还可以用nbtstat -a [IP],不过只能查看某台具体机器的MAC地址(查看其他机器的MAC地址)。 [基于MS]查看IP地...

Python练习实例001

问题:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? #! /usr/bin/env python3 # -*- coding:utf-8 -*- # Author : Ma Yi # Blog : http://www.cnblogs.com/mayi0312/ # Date : 2020-06-1...

Python 第四十二章 mysql 级联+查询

删除或修改被关联字段 场景:book表和publish表为多对一关系,book表的pid字段外键关联到了publish表的id字段 1 查看外键关系名称: show create table book; | book | CREATE TABLE `book` ( `id` int(11) NOT NULL AUT...

Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传

开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点   1:用户登陆验证(用户名、密码)   2:实现多用户登陆   3:实现简单的cmd命令操作   4:文件的上传(断点续传) 程序文件结构    说明: 客户端文件夹为TFTP_Client, 服务端文件夹为TFTP_Server,bin目录下的文件为启动...

linux下执行python错误: bad interpreter: No such file or directory

 /usr/bin/python^M: bad interpreter: No such file or directory python文件编码格式问题,需要将dos文件格式修改为unix文件格式,修改方法如下: 用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 filefor...