1

我需要简单地将单词“_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)

但它仍然不起作用..它不打印任何东西,文件夹中没有任何改变!

4

4 回答 4

5

os.rename需要源文件名和目标文件名。该变量filename包含您当前的文件名(例如,“something.txt”),而您的拆分将其分隔为somethingtxt。作为要重命名的源文件,您只需指定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.txtdir1/something_manual.txt.

于 2011-08-23T07:07:57.983 回答
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像上面那样。

于 2011-08-23T07:07:30.210 回答
3

IE。它什么都不做?让我们来看看:

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变成制表符。

于 2011-08-23T07:07:42.207 回答
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”

于 2011-08-23T07:41:13.970 回答