用于删除字符和替换文件名的Python脚本

时间:2017-05-19 14:13:51

标签: python filenames

我有一个python脚本,它查看文件夹中特定单词的所有文件,并用空格替换该单词。我不想在每次运行脚本后更改要查看的单词,而是希望继续为脚本添加新单词以查找并执行相同的替换操作。

我在macOS El Capitan上运行它。以下是剧本:

import os

paths = (os.path.join(root, filename)
        for root, _, filenames in os.walk('/Users/Test/Desktop/Test')
        for filename in filenames)

for path in paths:
    # the '#' in the example below will be replaced by the '-' in the filenames in the directory
    newname = path.replace('.File',' ')
    if newname != path:
        os.rename(path, newname)

for path in paths:
    # the '#' in the example below will be replaced by the '-' in the filenames in the directory
    newname = path.replace('Generic',' ')
    if newname != path:
        os.rename(path, newname)

您可以为这位新手提供任何帮助。

2 个答案:

答案 0 :(得分:4)

使用字典跟踪替换内容。然后,您可以遍历其键和值,如下所示:

import os

paths = (os.path.join(root, filename)
        for root, _, filenames in os.walk('/Users/Test/Desktop/Test')
        for filename in filenames)

# The keys of the dictionary are the values to replace, each corresponding
# item is the string to replace it with
replacements = {'.File': ' ',
                'Generic': ' '}

for path in paths:
    # Copy the path name to apply changes (if any) to
    newname = path 
    # Loop over the dictionary elements, applying the replacements
    for k, v in replacements.items():
        newname = newname.replace(k, v)
    if newname != path:
        os.rename(path, newname)

这将一次性应用所有替换,并且只重命名文件一次。

答案 1 :(得分:1)

每当您看到自己一次又一次地使用代码块时只需进行一次更改,通常最好将它们转换为函数。

在Python中快速简便地定义函数。它们需要在使用之前定义,因此通常它们在import语句之后位于文件的顶部。

语法如下:

def func_name(paramater1,paramater2...):

然后函数的所有代码都在def子句下缩进。

我建议你将for path in paths语句及其下的所有语句作为函数的一部分,并传入要搜索的单词作为参数。

然后,在定义函数之后,您可以在文件名中列出要替换的所有单词,并按以下方式运行该函数:

word_list = [.File, Generic]
for word in word_list:
    my_function(word)