Получать аргументы через канал оболочки в python?

У меня есть файл python, который использует glob для поиска файлов js в определенной папке, а затем распечатывает их:

print glob.glob(printfolder)

Я хочу получить имена файлов, найденные этим файлом, и передать их в другой файл, который подсчитывает строки кода каждого из этих файлов.

поэтому я использую:

python findjava.py /home/alien/Desktop/ | python countfile.py -a

(findjava — это скрипт, который находит java-файлы, этот адрес является аргументом того, в каком каталоге он должен искать эти файлы, а countfile — это файл, который получает 1 имя файла и подсчитывает свою строку кодов, аргумент -a должен показать все ( строки кода, комментарии и другие вещи, которые он считает)

Но я получаю следующий вывод:

['/home/alien/Desktop/testfile.js']
usage: countfile.py [-h] [-t] [-b] [-s] [-c] [-a] units
countfile.py: error: too few arguments

поэтому countfile все еще ждет аргумента с именем файла, который я пытаюсь получить с помощью

import sys
for line in sys.stdin:
    print line

Есть предположения? ;_;


person user3517203    schedule 09.04.2014    source источник
comment
Рассмотрим файловый ввод   -  person kojiro    schedule 10.04.2014
comment
Вы передаете результат findjava как стандартный ввод, а не как аргументы командной строки. Если вы хотите использовать вывод одной команды в качестве аргумента для другой, посмотрите xargs. См. этот вопрос.   -  person BrenBarn    schedule 10.04.2014
comment
Где countfile получает доступ к аргументам командной строки? Он просто читает sys.stdin.   -  person Barmar    schedule 10.04.2014
comment
parser = argparse.ArgumentParser(description='Обработать файл') parser.add_argument('-t', help='Показать общее количество строк', action=store_true) parser.add_argument('-b', help='Показать общее количество количество пустых строк', action=store_true) parser.add_argument('-s', help='Показать общее количество строк исходного кода', action=store_true) parser.add_argument('-c', help='Показать общее количество строк комментариев' , action=store_true) parser.add_argument('-a', help='Показать количество строк', action=store_true) parser.add_argument('units', action=store) args = parser.parse_args() #парсер печати. файл parse_args() = args.units   -  person user3517203    schedule 10.04.2014


Ответы (1)


print " ".join(glob.glob(printfolder))

Я думаю, будет работать лучше :P

или, может быть

print "\n".join(glob.glob(printfolder))

вы передаете строку типа ['asdasd','dsasdad']... что почти наверняка не соответствует ожиданиям countfile

person Joran Beasley    schedule 09.04.2014