Я пишу скрипт, который контролирует громкость.Имя сценария vv
, и он ожидает один аргумент.например vv .9
, где .9 - уровень, который вы хотите установить громкость.Эта программа работает, как и ожидалось, но я хочу изменить ее так, чтобы, если аргумент пропущен, она выводила текущий уровень громкости.Я пытался написать это так.
import sys
vol = float(sys.argv[1])
if len(sys.argv[1]) == 0:
print(round(volume.value_flat, 2))
exit(0)
else:
run the rest of the program
Я тоже пробовал это так:
if (sys.argv[1]) == '':
оба эти способа терпят неудачу.Я предполагаю, что если sys.argv не получит аргумент, он не будет запускать программу, даже если вы специально проверили отсутствие аргументов?Есть ли лучший способ сделать это без использования argparse
?
update: я исправил это с помощью пары ответов.Первое, что я делал неправильно, это тестировал len == 0, а не len == 1. sys.argv никогда не будет иметь len 0, потому что имя скрипта всегда [0].другая вещь заключалась в том, что я работал над sys.argv перед тестированием len - очевидно, что нет - нет.Кроме того, мой синтаксис был неправильным, должен был использовать (sys.argv), а не (sys.argv [1]).
Вот обновленный код:
if len(sys.argv) == 1:
with Pulse('volume-example') as pulse:
sink_input = pulse.sink_input_list()[0]
volume = sink_input.volume
print('current level:','\t', round(volume.value_flat, 2))
exit(0)
else:
vol = float(sys.argv[1]) # this line had to be moved to after len was checked
спасибо всем, кто помог.Я думаю, что мне нужно все три ответа, чтобы исправить это.