私は、ファイルやディレクトリを使用して、非常に単純な、端末のメニューを作成したいと思いますので、私は、次の試してみました:このargparseフリーズ問題を解決するにはどうすればいいですか?
if __name__ == '__main__':
p = argparse.ArgumentParser(NAME)
p.add_argument('-data:', '--input_data', default=sys.stdin)
p.add_argument('-labels:', '--targets', default=sys.stdin)
p.add_argument('-input_directory:', '--input', default=sys.stdin)
p.add_argument('-output_data:', '--output', default=sys.stdout)
opts = p.parse_args()
if not any([opts.input, opts.output, opts.targets,opts.input_data]):
p.print_usage()
quit()
print '\npress -h to see the help\n'
elif any([opts.targets,opts.input_data]):
print '\ncompleted action\n'
p.print_usage()
#Recibe (datos, etiquetas)
perform_stuff(opts.input_data, opts.targets)
quit()
#Here is the problem:
elif any([opts.input, opts.output]):
print '\ncompleted action\n'
retrive(opts.input)
write(opts.output)
注意を簡単にするために、私はperform_stuff(path/in/file, path/out/file)
、retrive(opts.input)
とwrite(opts.output)
実装をomitedこと。
#Here is the problem:
elif any([opts.input, opts.output]):
print '\ncompleted action\n'
retrive(opts.input)
write(opts.output)
私の簡単なプログラムだけでフリーズ:私が実行しようとすると、一方
if not any([opts.input, opts.output, opts.targets,opts.input_data]):
p.print_usage()
quit()
print '\npress -h to see the help\n'
elif any([opts.targets,opts.input_data]):
print '\ncompleted action\n'
p.print_usage()
#Recibe (datos, etiquetas)
perform_stuff(opts.input_data, opts.targets)
quit()
:問題は作品だけコマンドがあるということです。私はargparseで新しいです、私は問題がif/else文の適切な使用と相関していると思います。したがって、私は単純なプログラムのメニューをどのように作成するのですか?
、すべてが大丈夫であるように見えます。あなたのプログラムがどこに止まっているのかをデバッグしようとするべきです。 – ibizaman
各コマンド間でより良いフローを作成する方法はありますか(つまり、関数が呼び出され、作業を行い、停止した場合)? @ibizaman – tumbleweed
それは味の問題ですが、それはすでにあなたが望むことをするでしょう。あなたの関数の1つでない限り、quit()を呼び出す必要はありませんが、私は疑いがあります。どちらの方法でも、プログラムはフリーズするべきではありません。あなたはあなたの関数で実装したものを投稿し、それを呼び出す方法を呼び出すと、それが起こったときに表示される出力を投稿できますか? – ibizaman