私のプログラムは2つまたは3つのコマンドラインパラメータを取ります:
-sはオプションのパラメーターであり、後でプログラム内のスイッチを示します。-infileはファイル入力です。-outfileは書き込まれるファイルです。
エラーメッセージを出力し、次のいずれかが発生した場合に終了するには、プログラムが必要です。
- ユーザーが.genesで終わらないinfile名を指定している
- ユーザーは、.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'がargvに存在する場合に削除されたためです。ついさっき。だから私はこれを正しく書く方法がわかりません...