У меня есть текущий скрипт, включенный ниже, который входит в файл с расширением .las и заменяет определенные строки другими (например: cat -> kitten, dog -> puppy).
Все, что я хочу, эточтобы добавить в этот скрипт функциональность, которая переименовала бы ЛЮБОЙ файл .las с определенным именем в текущем каталоге, когда я запустил скрипт (т.е.: * .las -> animals.las).
Я быперетащите один файл в этот каталог, запустите скрипт, который выполняет замену текста и переименование, а затем переместите файл из текущего каталога.Поэтому для этого скрипта мне все равно, что он переписывает несколько файлов .las под одним именем.
# read a text file, replace multiple words specified in a dictionary
# write the modified text back to a file
import re
import os
import time
# the dictionary has target_word:replacement_word pairs
word_dic = {
'cat' : 'kitten',
'dog' : 'puppy'
}
def replace_words(text, word_dic):
"""
take a text and replace words that match a key in a dictionary with
the associated value, return the changed text
"""
rc = re.compile('|'.join(map(re.escape, word_dic)))
def translate(match):
return word_dic[match.group(0)]
return rc.sub(translate, text)
def scanFiles(dir):
for root, dirs, files in os.walk(dir):
for file in files:
if '.las' in file:
# read the file
fin = open(file, "r")
str2 = fin.read()
fin.close()
# call the function and get the changed text
str3 = replace_words(str2, word_dic)
# write changed text back out
fout = open(file, "w")
fout.write(str3)
fout.close()
#time.sleep(1)
scanFiles('')
Я скопировал скрипт из онлайн-примеров, поэтому я не знаю всех внутренних операцийиз этого, так что если у кого-то есть более элегантный / эффективный способ сделать то, что делает этот скрипт, я готов изменить его.