Python,超长文件名的解决方案
这里写自定义目录标题
- 今天用python,写一个批量移动文件的代码!
今天用python,写一个批量移动文件的代码!
大家看到了,将近900个项目,好几层的目录,一个项目一下面有50几张的照片,要把这些照片集中移动到第一层的目录下面。
最初我的代码是这样写的:
import os
from shutil import movepath_list = os.listdir('./qi')
for path in path_list:path_list1 = os.listdir('./qi/'+path)for path1 in path_list1:path_list2 = os.listdir('./qi/'+path+'/'+path1)for img in path_list2:png_list = os.listdir('./qi/'+path+'/'+path1+'/'+img)for png in png_list:oldfile = os.path.join('./qi'+'/'+path+'/'+path1+'/'+img+'/',png)newfile = os.path.join('./qi'+'/'+path+'/',png)move(oldfile,newfile)
目录有好几个层级,前面的 for 循环就不细述,感觉代码都没错。
运行后总是报错,FileNotFoundError: [WinError 3] 系统找不到指定的路径。
后面发现是文件名超过255位造成的。
最后的解决方法是将相对路径改为绝对路径,并在路径前方加上“\\?\”。
找了前辈的文章,摘要如下:
2、这个解决方法是想办法告诉电脑我的路径长度很长。首先我查询了windows下文件路径的最大长度是多少,查到的结果是260.这对于绝大多数情况都足够用了,但是文件路径长的问题还是存在的。然后就看到了UNC的定义,原来windows下的文件路径的长度最大可以是3万多的长度,具体多少记不清了哈哈哈。只要在绝对路径的前面加上“\\?\”就能告诉计算机我需要使用最大的路径长度,这样就不会出现路径太长而导致的无法操作的问题了。
引自:https://www.cnblogs.com/hexiaoqi/p/13040220.html
怎么加“\\?\”这里没有说太清楚了
试了好几次,发现要加好多个\总算得到结果,代码如下供参考:
import os
from shutil import movepath_list = os.listdir('./qi')
#几次循环,获得藏在最底层目录的文件名
for path in path_list:path_list1 = os.listdir('./qi/'+path)for path1 in path_list1:path_list2 = os.listdir('./qi/'+path+'/'+path1)for img in path_list2:png_list = os.listdir('./qi/'+path+'/'+path1+'/'+img)for png in png_list:#获得绝对路径old_path = os.path.abspath('./qi'+'/'+path+'/'+path1+'/'+img+'/')new_path = os.path.abspath('./qi'+'/'+path+'/')#在绝对路径前加料,就可以识别了oldfile = os.path.join('\\\?\\'+old_path,png)newfile = os.path.join('\\\?\\'+new_path,png)move(oldfile,newfile)
以上心得体会,供大家参考!
Python,超长文件名的解决方案相关推荐
- Python可视化——3D绘图解决方案pyecharts、matplotlib、openpyxl
Python可视化--3D绘图解决方案pyecharts.matplotlib.openpyxl 1. pyecharts 2. matplotlib 3. openpyxl 这篇博客将介绍pytho ...
- python高并发的解决方案
python高并发的解决方案 参考文章: (1)python高并发的解决方案 (2)https://www.cnblogs.com/angelyan/p/10439475.html 备忘一下.
- python读取文件名-python读取文件名并改名字的实例
第一版,能实现,但最后发现文件的顺序改变了: import os def reename(): nm=1 pathh="/home/huangyaya/file/image/pic/chip ...
- python怎么读文件名-python读取文件名并改名字的实例
第一版,能实现,但最后发现文件的顺序改变了: import os def reename(): nm=1 pathh="/home/huangyaya/file/image/pic/chip ...
- 怎么在终端启用python_在终端启动Python时报错的解决方案
最近,在终端启动Python时,报了一个错误: Failed calling sys.__interactivehook__ Traceback (most recent call last): Fi ...
- python 输入文件名查找_python 查找文件名包含指定字符串的方法
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径. import os class searchfile(object): def __init__ ...
- python 打印文件名_在Python中打印文件名,关闭状态和文件模式
python 打印文件名 Prerequisite: Opening, closing a file/open(), close() functions in Python 先决条件: 在Python ...
- Ubuntu下Python安装了依赖包后仍然找不到包 python setup.py install 解决方案
Ubuntu下Python安装了依赖包后仍然找不到包 python setup.py install 解决方案 参考文章: (1)Ubuntu下Python安装了依赖包后仍然找不到包 python s ...
- eclipse 编辑 python 中文乱码的解决方案
eclipse 编辑 python 中文乱码的解决方案 参考文章: (1)eclipse 编辑 python 中文乱码的解决方案 (2)https://www.cnblogs.com/mouseIT/ ...
最新文章
- pom配置之:distributionManagementsnapshot快照库和release发布库
- envi反演水质参数_科技前沿基于GOCI静止水色卫星数据的长江口及邻近海域Kd(490)遥感反演及其在机载激光测深预评估中的应用...
- leetcode算法题--大礼包
- 2018年秋计算机基础在线作业,《计算机应用基础》2017年的秋学期在线作业三.doc...
- 高速的二舍八入三七作五_有没有发现,高速收费都是5的倍数,这是为什么?怎么判断的?...
- mysql使用索引下推的好处_mysql的索引下推理解和实践
- 工作206:修改新增按钮显示逻辑
- EF中DB First模式下数据库中表结构变化时如何快速同步到EF模型中
- python用筛选法求解小于n的所有素数_用筛选法求解n以内的所有素数
- 10大最重要的Web安全风险之三----A3,错误的认证和会话管理
- 分布式链路追踪 之 Skywalking 设计理念核心原理
- 软件项目管理案例教程(第三版)课后习题及答案
- Java后台调用API的方法
- 计算机桌面文件如何发送给qq好友,怎么把电脑里的文件夹发给qq好友
- 广东将5G基站专项规划纳入各地国土空间规划
- 移动国际漫游电话费用计算
- HDU 4565解题报告
- python怎么筛选并列关系数据_一文带你学会如何用Python生成带误差棒的并列和堆积柱状图...
- 同步多个 git 远程仓库
- Java入门,最全面最简单的Java基础教程
热门文章
- shuf 命令: 随机排序文件
- leecode_java学习
- Dubbo架构整体设计
- VTM3.0代码阅读:xDeriveCUMV函数
- java数组为空如何判断_Java中判断数组是否为空?
- a 寻路算法 java_A*自动寻路算法—java版
- 滴滴上线“今日爆款”,和美团开展下一个“拼多多”争位赛?
- HDU-4333 Revolving Digits
- uniapp-微信小程序定位(授权定位)
- 外贸新手如何高效管理Linkedin账号