Для моего проекта анализа текста (с Enron набор данных), у меня есть этот сценарий Python:
from glob import glob
import fileinput
with open('/media/output/inbox.txt', 'w') as out:
for line in fileinput.input(glob('*.')):
if 'Subject:' in line:
out.write(line)
Больше чем в 1 000 папок со структурой папок глубины с одним шагом как это,
-folder
--folder 2.
при помощи этой терминальной команды и это работает отлично.
find allen-p fischer-m kitchen-l phanis-s smith-m arnold-j forney-j kuykendall-t pimenov-v solberg-g ,,,,,,,,,,, zufferli-j -maxdepth 1 -exec cp file.py {} \;
Путем рассмотрения сценария Python я пытаюсь извлечь конкретную строку из файла и вставить его в другом файле.
Затем я понял, что должен запустить эти скрипты один за другим.
Как я могу запустить каждый скрипт автоматически один за другим и со всей структурой папок?
Я ищу некоторый терминальный код как вышеупомянутый или сценарий Python.
Вы не должны копировать сценарий в каждый каталог. Просто измените эти find
команда для выполнения его вместо этого:
find allen-p ... zufferli-j -maxdepth 1 -type d -execdir python "$PWD"/file.py \;
-execdir
опция выполняет команду в каждом каталоге. Мы используем $PWD
для предоставления полного пути сценарию, так, чтобы изменение, на которое не влияет рабочий каталог, где команда ищет сценарий.
Однако, так как Вы скопировали его так или иначе, можно пропустить $PWD
:
find allen-p ... zufferli-j -maxdepth 1 -type d -execdir python file.py \;
<час> Вы не обеспечили, тип регистрируются в Вашем find
команда (как, я сделал с -type d
выше). Без него каждый файл в тех каталогах был теперь перезаписан с file.py
. Вы только хотите скопировать в (и работать в) каталоги, таким образом, необходимо было добавить -type d
к нему.
Вы могли также записать цикл, который перемещается в каждый каталог и выполняет сценарий перед движением назад:
for dir in allen-p fischer-m ... solberg-g; do
cd "$d" && /path/to/python/script.py && ../
done
Примечание, которое это приведет к сбою, если сценарий Python перестанет работать в каком-либо из каталогов.