Python標準ライブラリにはどちらのスタイルも直接サポートされています。
--video <video> <rating>
は、おそらくユーザー
--videos
/--ratings
すでに呼び出し元のスクリプトで分離されたデータを持っている場合は有用である可能性があるため、より自然です。
好きな場合は両方をサポートできます。あなたが選んだのは主に、あなたのスクリプトがどのように使用される可能性が高いかによって知らされる意見の問題です。
import argparse
p = argparse.ArgumentParser()
p.add_argument('--video', nargs=2, action='append')
p.add_argument('--videos', nargs='+')
p.add_argument('--ratings', nargs='+')
args = p.parse_args()
for vid, rating in args.video:
print("Video: {}, rating: {}".format(vid, rating))
# It is up to the caller to make sure the same number of videos and ratings
# are specified with --videos and --ratings
for vid, rating in zip(args.videos, args.ratings):
print("Video: {}, rating: {}".format(vid, rating))
その後、あなたは単にあなたがこのようにそれを使用することがあります、シェルアレイと組み合わせて
vidrate --video cat_video.mp4 6 video1.mp4 9
または
vidrate --videos cat_video.mp4 video1.mp4 --ratings 6 9
あるいは組み合わせ
vidrate --video cat_video.mp4 6 video1.mp4 9 --videos foo.mp4 bar.mp4 baz.mp4 --ratings 1 2 3
を使用することができます:
cat_vid=(cat_video.mp4 6)
vid_one=(video1.mp4 9)
other_videos=(foo.mp4 bar.mp4 baz.mp4)
other_ratings=(1 2 3)
vidrate --video "${cat_vid[@]}" --video "${vid_one[@]}" --videos "${other_videos[@]}" --ratings "${other_ratings[@]}}"
どのように関連付けを行いますか?配列は 'bash'?つまり' array [cat_video.mp4] - > 6'ですか?このようなもの? – Inian
申し訳ありませんが、私がアソシエーションと言いましたが、混乱させたかもしれませんが、どのビデオがどのレーティングであるかを明確にしたかっただけです。@ Inian – h3y4w