У меня есть 265 CSV файлов с более чем 4 миллионами итоговых записей (строк), и вам нужно выполнить поиск и заменить во всех файлах CSV. У меня есть фрагмент моего кода PowerShell ниже, который делает это, но для выполнения действия требуется 17 минут:
ForEach ($file in Get-ChildItem C:\temp\csv\*.csv)
{
$content = Get-Content -path $file
$content | foreach {$_ -replace $SearchStr, $ReplaceStr} | Set-Content $file
}
Теперь у меня есть следующий код Python, который делает то же самое, но занимает менее 1 минуты:
import os, fnmatch
def findReplace(directory, find, replace, filePattern):
for path, dirs, files in os.walk(os.path.abspath(directory)):
for filename in fnmatch.filter(files, filePattern):
filepath = os.path.join(path, filename)
with open(filepath) as f:
s = f.read()
s = s.replace(find, replace)
with open(filepath, "w") as f:
f.write(s)
findReplace("c:/temp/csv", "Search String", "Replace String", "*.csv")
Почему метод Python намного эффективнее? Является ли мой код PowerShell неэффективным или Python просто более мощный язык программирования, когда дело доходит до обработки текста?