我有一个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)
您可以为这位新手提供任何帮助。
答案 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)