Как запустить определение python внутри .py-файла из оболочки?

Я бы использовал этот проект Normalize, это инструмент командной строки для нормализации аудиофайлов. Похоже, именно то, что вам нужно. Может выполнять пакетную обработку и не требует передискретизации в промежуточные форматы.

Он находится в репозитории пакета как normalize-audio, sudo apt-get install normalize-audio. Это сборка, поддерживаемая выше по течению от Debian, поэтому она должна быть в любом LTS или новее и построена с поддержкой mp3 (протестирована). Существует хорошая manpage man normalize-audio для изучения параметров, но по умолчанию команды по умолчанию работают хорошо. Для пакетной обработки (нормализовать объем для нескольких файлов), normalize-audio -b *.mp3 или указать отдельные имена файлов вместо использования подстановочных знаков.

1
задан 7 May 2014 в 18:25

2 ответа

Вы не можете вызывать функции Python непосредственно из оболочки Bash. Вы получаете эту конкретную ошибку, потому что bash анализирует ваши аргументы (20,3) следующим образом:

$ echo (20,3)
bash: syntax error near unexpected token `20,3'

Чтобы передать скобки в виде строки, вам необходимо их избежать:

$ echo \(20,3\) '(1,2)'
(20,3) (1,2)

Но это еще не волшебным образом запускается как код Python - вам нужно проанализировать аргументы командной строки в вашей программе Python (сохранить как x.py):

import sys

def fn(a,b):
  print a+b

eval(sys.argv[1])

Затем: [!d4 ]

$ python x.py 'fn(0,13)'
13
1
ответ дан 24 May 2018 в 08:03
  • 1
    Было бы больше объяснений, необходимых для вашего кода, который начинается с импорта sys. Благодарю. – empedokles 12 May 2014 в 15:09

Как я нашел в этом ответе, вы можете запустить функцию python непосредственно из bash, например:

$ python -c 'from a import stromkosten_pro_jahr; stromkosten_pro_jahr(20,3)'

Где a - имя вашего файла / модуля (a.py ).

Но главное - находиться в том же каталоге, что и ваш файл.

1
ответ дан 24 May 2018 в 08:03

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

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