Я пытаюсь выполнить питон скрипт на все текстовые файлы в папке:Python - для фи в sys.argv [1]: список аргументов слишком долго
for fi in sys.argv[1:]:
И я получаю следующее сообщение об ошибке
-bash: /usr/bin/python: Argument list too long
Так я называю эту функцию Python заключается в следующем:
python functionName.py *.txt
папка имеет около 9000 файлов. Есть ли способ запустить эту функцию, не разбирая мои данные в других папках и т. Д.? Разделение файлов было бы не очень практичным, потому что в будущем мне придется выполнять эту функцию в еще большем количестве файлов ... Спасибо
EDIT: На основании выбранного правильного ответа и комментариев ответчика (Charles Duffy) что работает для меня заключается в следующем:
printf '%s\0' *.txt | xargs -0 python ./functionName.py
, потому что у меня нет действительной хижины ..
Это не вызвано самим python, а использованием os. Вот ссылка на эту тему: http://stackoverflow.com/questions/5533704/python-sys-argv-limitations Но в любом случае это не лучшая практика, попробуйте что-то вроде ледяного. – Igle
(В другом месте - модули Python * должны иметь расширения '.py'. * Исполняемые файлы *, написанные на Python, не должны содержать расширение - исполняемые файлы определяют команды, и вы не запускаете' ls.elf' - - но вместо этого следует использовать shebang для указания своего интерпретатора ('#!/usr/bin/env python' или такого) и быть отмеченным исполняемым (' chmod + x functionName'). –
... если вы используете setuptools, ll автоматически создает и устанавливает исполняемые файлы обертки для вас, которые вызывают функции, которые вы хотите запустить, эти оболочки, как правило, являются исполняемыми командами без расширений. –