Как выполнить несколько файлов Python путем выполнения одного терминального кода?

Для моего проекта анализа текста (с 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.

3
задан 25 June 2015 в 21:32

2 ответа

Вы не должны копировать сценарий в каждый каталог. Просто измените эти 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 к нему.

3
ответ дан 1 December 2019 в 15:57

Вы могли также записать цикл, который перемещается в каждый каталог и выполняет сценарий перед движением назад:

for dir in allen-p fischer-m ... solberg-g; do
    cd "$d" && /path/to/python/script.py && ../
done

Примечание, которое это приведет к сбою, если сценарий Python перестанет работать в каком-либо из каталогов.

1
ответ дан 1 December 2019 в 15:57

Другие вопросы по тегам:

Похожие вопросы: