使用Python重命名数百个长文件名

使用Python重命名数百个长文件名,python,python-3.x,Python,Python 3.x,我想循环浏览数百个文件名并重命名它们。问题是文件名超过260个字符,并且包含使os.rename不可用的字符 下面的代码使用常规文件名运行,但不使用前面描述的文件: import os filepath = "path" path = os.chdir(filepath) count = 1 for filename in os.listdir(path): new_file_name = f"{count}.csv" os.rename(fi

我想循环浏览数百个文件名并重命名它们。问题是文件名超过260个字符,并且包含使os.rename不可用的字符

下面的代码使用常规文件名运行,但不使用前面描述的文件:

import os
filepath = "path"
path = os.chdir(filepath)
count = 1
for filename in os.listdir(path):
   new_file_name = f"{count}.csv"
   os.rename(filename,new_file_name)
   count += 1
当我使用长文件名运行时,我得到:

Traceback (most recent call last):
  File "C:\Users\sarah\Desktop\Python\program.py", line 7, in <module>
    os.rename(filename,new_file_name)
FileNotFoundError: [WinError 3] The system cannot find the path specified:
回溯(最近一次呼叫最后一次):
文件“C:\Users\sarah\Desktop\Python\program.py”,第7行,在
重命名(文件名,新文件名)
FileNotFoundError:[WinError 3]系统找不到指定的路径:

有没有办法循环使用这些文件名并重命名它们?

在Linux的Windows中,文件名不能超过255个字符

Linux:

touch 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'

touch: cannot touch ‘zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz’: File name too long
窗口:

c:\Users\cp>echo 'foo' > zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

The filename, directory name, or volume label syntax is incorrect.
[特定于Windows的] 要克服最大路径限制的问题,请替换

os.rename(filename,new_file_name)


你好有两种方法可以替代os.rename。尝试使用shutil软件包或使用os.system调用终端。我希望两者都能奏效!您是否检查了
os.listdir
是否正确返回了文件名?对于我的测试用例,代码运行良好。你确定
路径
文件夹存在吗?添加一个print(文件名,新文件名)语句可能有助于解决这个问题。Locogris,谢谢,我尝试了pathlib模块,也遇到了同样的错误。Wups,我尝试了os.listdir并得到了文件的确切名称。Graygiel,是的,路径文件夹存在,代码将在同一文件夹中名称较短的文件上运行。但是路径可以超过255个字符
os.rename("\\\\?\\" + filename, "\\\\?\\" + new_file_name)