2015-03-11 4 views
-1

Я пытаюсь использовать подпроцесс в Python, чтобы запустить некоторые сценарии на Linux, , но мой путь не работает на то, что я пытаюсь сделать ..Получение путь в питон скрипт

Я использую:

subprocess.Popen(["nohup", "python", DIR4, DIR2 + dirname + /* + '/*.json']) 

DIR4 = path of python, DIR2+dirname - это каталог, в который я хочу войти. Отсюда я хочу использовать все подкаталоги в DIR2+dirname и все json-файлы во всех подкаталогах.

так, например:

DIR2+dirname = /tmp/test/ 

в каталоге /tmp/test/, есть /tt1, /tt2, /tt3 каждых /tt каталогов содержат 1.json, 2.json, 3.json Как я могу назвать все это с помощью моей команды всех путей на вершине?

+0

Вы хотите найти файлы JSon во всех подкаталогах рекурсивны, или просто в каталоге плюс один уровень подкаталогов? –

ответ

0

Используйте glob модуля:

import os.path 
import glob 
jsons = glob.glob(os.path.join(DIR2, dirname, '*', '*.json')) 
subprocess.Popen(["nohup", "python", DIR4] + jsons) 
+0

это дает мне ошибку, когда я запускаю ее так: @tzaman – PETER

+0

См. Мое редактирование; также какая ошибка? – tzaman

+0

Я получаю 'Использование: python LIMSQCstats.py inputFile.json' и не делать то, что он должен делать @tzaman – PETER

0

Использовать принятый ответ this StackOverflow question, начиная с DIR2+dirname в качестве пути для поиска всех ваших файлов JSON.

Этот фрагмент был скопирован оттуда и немного измененная:

import fnmatch 
import os 

matches = [] 

for root, dirnames, filenames in os.walk(DIR2 + dirname): 
    for filename in fnmatch.filter(filenames, '*.json'): 
     matches.append(os.path.join(root, filename)) 

subprocess.Popen(["nohup", "python", DIR4] + matches) 

Если у вас есть много файлов, имейте в виду, что есть OS конкретные ограничения на длину командной строки см это ServerFault question.

Смежные вопросы