́・ω・`)気をつけないといけないポイントを色々まとめておこう。一応linux環境で、python3.5以降のそれなりに新しいpythonを想定。目次コマンドライン引数を処理するときの作法とりあえず絶対パスおまえは実在するのか?単体ファイルの拡張子チェックディレクトリの中にあるファイルを丸ごと取ってきたいときもっと色々知りたい関連記事コマンドライン引数を処理するときの作法コマンドライン引数自体はsys.argvで取れる。これはリストになっていて、0番目はソースコード名、1番目以降は引数の中身になってるんだって。「引数は1個だからsys.argv[1]を読めば良いんだな!」とか思って書くと、うっかり引数を渡し忘れたときIndexErrorを投げられて悲しい気持ちになる。sys.argv[1]とりあえず絶対パス入力は大抵は相対パスなんだけど、相対パスのまま扱うと何かと事故の原因になりがち。受け取ったパスは絶対パスに変換しとく。os.path.abspath(file_path)ちなみに、abspathには「相対パスだから『../』とか指定するにゃん!」とか「ディレクトリだから最後に『/』を付けて入力するにゃん!」とかやっても平然とぜんぶ消してくれたりする、素晴らしい機能がある。ファイルパス操作では、テキスト処理的にごりごり書いて用を済ませることも多いけど、フォーマットを綺麗に統一してくれるのはそういうとき地味に嬉しい。おまえは実在するのか?まぁ、問答無用でopen()してopen()からエラーを投げてもらっても別に良いんだけど・・・。sys.exit("そんなディレクトリねーよ!")単体ファイルの拡張子チェックちょっと悩んでから、「split(".")すりゃあええ」と割り切ることが多い。絶対パス変換、存在チェックを先にやるか、これを先にやるかは気分次第なところがあるかも。sys.exit("拡張子がちげーよ!")ディレクトリの中にあるファイルを丸ごと取ってきたいときとりあえずディレクトリかどうかの確認までは終わったと仮定し、ディレクトリ内のファイルを丸ごと取ってくる方法を考える。無難な方法は、os.listdirを使うことだろうか。os.listdir(path)ただし、こいつはパスじゃなくて、名前(上位階層を含まない)しか返さない。/home/hoge/hoge.txtがあって、os.listdir("/home/hoge")したら["hoge.txt"]が返るみたいな感じなので、ファイルを開くときは自分で上位階層のパスを足してやらないといけなくて面倒。......あと、テキストファイルだろうが、バイナリ実行ファイルだろうが、ディレクトリだろうが、ぜんぶひっくるめて返しやがる。自分で判定処理を書かないといけないのも面倒。passそこで、globという素晴らしい標準ライブラリを使うことができる。返り値が絶対パスのリストなのは使いやすいし、なんとワイルドカードや正規表現でパターンマッチもできるという。...listdirでやってた苦労はなんだったのだろうか。知りたい再帰的にディレクトリを辿って全部のファイルを見たいな~、って方にはこちらのqiitaの記事が参考になると思います。Qiitaあと、pathlibなる高水準の標準ライブラリもあるそうです。ドキュメント使いこなせば強そうですが、個人的にはこの手の、ガッツリオブジェクト指向で抽象化しました的なライブラリは苦手です。覚えるルールが多くてしんどいんです。いうの好きな人はこれ使えば、たぶんこの記事に書いたことぜんぶできると思います。このブログについてスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。