这是我第一次使用堆栈溢出,如果我犯了错误就很抱歉。
尝试运行此代码时,它会执行正常并给我正确重命名的文件。
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\elsewhere')
适用于其他目录,但是当使用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`
我不知道这里有什么问题请帮助我。
答案 0 :(得分:1)
问题是,对于其他目录,您正在正确获取目录内容,但是当您尝试仅使用文件名重命名内容时,程序实际上将其视为自己的目录,并且无法找到该文件,抛出一个错误。相反,你应该做如下的事情:
os.rename('\some\folder\elsewhere\filename.txt', '\some\folder\elsewhere\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(&#39; filename.txt&#39;,&#39; filenam2.txt&#39;)
答案 1 :(得分:0)
如果您使用os.listdir(path)
,则还必须在重命名中提供路径:os.rename(path+filename,path+new_name)
。
其他选项是使用os.chdir(desired_path)
。这样,您的os.rename
就可以了。