Python os.rename无法重命名特定目录的文件

Python os.rename无法重命名特定目录的文件,python,Python,这是我第一次使用堆栈溢出,如果我犯了错误,请道歉 当试图运行这段代码时,它会很好地执行,并给我正确重命名的文件 import os a = 0 name_target = raw_input("input the prefix of the files you want enumerated") for filename in os.listdir("."): if filename.startswith(name_target): a = int(a) + 1

这是我第一次使用堆栈溢出,如果我犯了错误,请道歉

当试图运行这段代码时,它会很好地执行,并给我正确重命名的文件

import os
a = 0
name_target = raw_input("input the prefix of the files you want enumerated")
for filename in os.listdir("."):
    if filename.startswith(name_target):
        a = int(a) + 1
        a = str(a)
        no = filename.__len__() - 4
        os.rename(filename, filename[:no] + a + '.txt')
现在,只要脚本与文件位于同一文件夹中,就可以了。但是我希望能够将此脚本用于不在同一文件夹中的文件

我发现
os.listdir('\some\folder\otherbes')
适用于其他目录,但在使用
os.rename重命名它们时,代码会中断,给我以下消息:

Traceback (most recent call last):
  File "<string>", line 244, in run_nodebug
  File "C:\Users\guy\Desktop\otherfolder\renaming_script.py", line 10, in <module>
    os.rename(filename, filename[:no] + a + '.txt')
WindowsError: [Error 2] The system cannot find the file specified`
回溯(最近一次呼叫最后一次):
文件“”,第244行,在run_nodebug中
文件“C:\Users\guy\Desktop\otherfolder\renaming\u script.py”,第10行,在
重命名(文件名,文件名[:no]+a+'.txt')
WindowsError:[错误2]系统找不到指定的文件`

我不知道这里出了什么问题,请帮帮我。

问题是,对于其他目录,您可以正确地获取目录内容,但当您尝试使用文件名重命名目录内容时,程序实际上会在其自己的目录中查找该目录,并且无法找到该文件,因此会抛出一个错误。相反,你应该做以下事情:

os.chdir('\some\folder\elsewhere')
os.rename('\some\folder\where\filename.txt','\some\folder\where\filename2.txt')

或者,您也可以执行以下操作:

directory = '\some\folder\elsewhere'
os.rename(os.path.join(directory, 'filename.txt'), os.path.join(directory, 'filename2.txt'))
或者,您也可以按如下方式更改工作目录:

os.chdir('\some\folder\elsewhere')
然后简单地调用
os.rename
方法,就好像您在所需的目录中一样
os.rename('filename.txt','filenam2.txt')

如果使用
os.listdir(path)
,还必须在重命名中提供路径:
os.rename(path+filename,path+new\u name)


另一个选项是使用
os.chdir(所需路径)
。这样,您的
os.rename
就可以了。

对于重命名,您还必须提供完整路径,而不仅仅是filename@andi:请将不正确的windows标记通知用户,而不是仅将其编辑掉。谢谢,您给我的第二个解决方案似乎对我的枚举也有效