鱼C论坛

 找回密码
 立即注册
查看: 4042|回复: 11

[已解决]通过python备份文件路径和文件名太长的问题!!

[复制链接]
发表于 2023-3-2 11:53:02 | 显示全部楼层    本楼为最佳答案   
Windows 文件系统 NTFS 的文件名和目录路径有最大长度,即 MAX_PATH 限制最长 260 个字符

在 Windows 上,你可以尝试以下几种方法来解决这个问题:

1、使用相对路径:如果可能的话,尽量使用相对路径来引用文件。相对路径相对于当前工作目录或脚本文件所在目录。

2、使用短路径名:你可以使用 Python 中的 ctypes 模块来获取文件的短路径名。例如:

  1. import ctypes
  2. def short_path_name(long_name):
  3.     """
  4.     获取文件的短路径名
  5.     """
  6.     buf = ctypes.create_unicode_buffer(1024)
  7.     ctypes.windll.kernel32.GetShortPathNameW(long_name, buf, len(buf))
  8.     return buf.value
复制代码

然后可以像这样使用:

  1. src = short_path_name(src)
  2. dst = short_path_name(dst)
复制代码


3、使用 UNC 路径:UNC 路径的格式为 \\server\share\path\file,

它们不受文件路径长度限制的影响。如果你可以访问远程计算机或网络共享,可以使用 UNC 路径。

例如,如果你要备份的文件位于 E:\path\to\file.docx,你可以将其转换为 \\localhost\E$\path\to\file.docx。

  1. src = r'\\localhost\E$\path\to\file.docx'
  2. dst = r'\\localhost\E$\backup\file.docx'
复制代码


4、你可以尝试使用本地组策略编辑器来启用长路径支持。

找到并打开文件(本地组策略编辑器)gpedit.msc,然后依次点开 计算机配置 > 管理模板 > 系统 > 文件系统,

找到“启用 Win32 长路径”,将其状态更改为“已启用”
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 13:07:03 | 显示全部楼层
pysunred 发表于 2023-3-2 13:03
我发现问题,因为程序执行的是‘/’路径,但我用了加长路径识别,要用‘\‘路径
我现在想在最后一步
...

在字符串前面加个 r 就行

比如:

  1. src = r"d:\temp"
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 13:20:06 | 显示全部楼层
pysunred 发表于 2023-3-2 13:18
刚刚测试了一下,这样子是可以,多加一个\
new_src = src.replace('/', '\\', 100)

这样确实可以,如果字符串的最后一个字符是 \ 就不能用 r,只能用 \\
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 14:32:00 | 显示全部楼层
本帖最后由 isdkz 于 2023-3-2 14:34 编辑


三引号怎么用?你试试在字符串的最后一个字符是 \ 的时候用三引号看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-26 05:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表