Моя программа занимает 2 или 3 параметра командной строки:Командная строка запроса ошибок
-s необязательный параметр, указывающий переключатель в моей программе позже -infile является входной файл -outfile должен быть написанный файл
мне нужна программа для вывода сообщения об ошибке и выйти, если какой-либо из следующих действий происходит:
- пользователь указывает входной_файл имя, которое не заканчивается .genes
- специфика пользователь вводит выходной_файл имя, которое не заканчивается либо .fa или .fasta
- пользователь предоставляет меньше 2, или более, чем 3, параметры
- первый параметр пользователя начинается с тире, но не " -s'
Я написал:
def getGenes(spliced, infile, outfile):
spliced = False
if '-s' in sys.argv:
spliced = True
sys.argv.remove('-s')
infile, outfile = sys.argv[1:]
if not infile.endswith('.genes'):
print('Incorrect input file type')
sys.exit(1)
if not outfile.endswith('.fa' or '.fasta'):
print('Incorrect output file type')
sys.exit(1)
if not 2 <= len(sys.argv) <= 3:
print('Command line parameters missing')
sys.exit(1)
if sys.argv[1] != '-s':
print('Invalid parameter, if spliced, must be -s')
sys.exit(1)
Однако, что-то конфликтует с некоторыми условными, включая первый и последний будучи противоречивым из-за того, что s.argv [1] всегда неравнодушным к '-s', потому что 's' были предсказуемыми nt в argv, он был удален ранее. Поэтому я не знаю, как написать это правильно ...
Просто nitpicking, но ошибки должны быть отправлены на stderr. –
Что такое 'stderr'? –
'sys.argv.remove ('s')' 's' ->' -s', no? –