我只需要在特定目录中的所有文件的末尾添加“_Manual”一词 这是我目前正在使用的脚本 - 我没有使用python的经验,所以这个脚本是我躺在其他脚本的frankenstine!
它不会给出任何错误消息,但它也不起作用..
folder = "C:\Documents and Settings\DuffA\Bureaublad\test"
import os, glob
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
filename_split = os.path.splitext(filename) # filename and extensionname (extension in [1])
filename_zero = filename_split[0]
os.rename(filename_zero, filename_zero + "_manual")
我现在正在使用
folder = "C:\Documents and Settings\DuffA\Bureaublad\test"
import os # glob is unnecessary
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
fullpath = os.path.join(root, filename)
filename_split = os.path.splitext(fullpath) # filename and extensionname (extension in [1])
filename_zero, fileext = filename_split
print fullpath, filename_zero + "_manual" + fileext
os.rename(fullpath, filename_zero + "_manual" + fileext)
但它仍然无法正常工作.. 它没有打印任何内容,文件夹中没有任何变化!
答案 0 :(得分:5)
os.rename
需要源文件名和目标文件名。变量filename
包含您当前的文件名(例如“something.txt”),而您的拆分将其分为something
和txt
。作为要重命名的源文件,您只需指定something
,它会无声地失败。
相反,您想要重命名filename
中给出的文件,但是当您走进子文件夹时,您需要确保使用绝对路径。为此,您可以使用os.path.join(root, filename)
。
所以最后你得到这样的东西:
os.rename(os.path.join(root, filename),
os.path.join(root, filename_zero + "_manual" + filename_split[1]))
这会将dir1/something.txt
重命名为dir1/something_manual.txt
。
答案 1 :(得分:4)
folder = r"C:\Documents and Settings\DuffA\Bureaublad\test"
import os, glob
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
filename_split = os.path.splitext(filename) # filename and extensionname (extension in [1])
filename_zero = filename_split[0]
os.rename(os.path.join(root, filename), os.path.join(root, filename_zero + "_manual" + filename_split[1]))
在您的代码中,您尝试重命名filename_zero
,这是没有扩展名的文件名,因此不存在作为真实路径。您必须像上面一样指定os.rename
的完整路径。
答案 2 :(得分:3)
予。即它什么都没做?我们来看看:
folder = "C:\Documents and Settings\DuffA\Bureaublad\test"
import os # glob is unnecessary
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
fullpath = os.path.join(root, filename)
filename_split = os.path.splitext(fullpath) # filename and extensionname (extension in [1])
filename_zero, fileext = filename_split
os.rename(fullpath, filename_zero + "_manual" + fileext)
可能会成功,因为你必须使用完整的路径。但是我不明白为什么在找不到文件时没有例外......
编辑将更改置于更突出的位置:
你似乎也错了。
使用
folder = r"C:\Documents and Settings\DuffA\Bureaublad\test"
以防止\t
变成制表符。
答案 3 :(得分:0)
for root, dirs, filenames in os.walk(folder):
for filename in filenames:
os.rename(os.path.join(root,filename),
os.path.join(root,'%s_manual%s' % os.path.splitext(filename)))
你应该在代码中添加一个控件,以验证要重命名的文件名在其字符串名称中是否已经是“_manual”