とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Pythonでコマンラインド引数を扱う

WindowsでPython シリーズ その29


とうとうPythonでコマンドライン引数を扱う時が来た!
これはもうレベル的にPythonをバッチファイルと同じ感覚で利用できる日が近いことを意味しますね!

Pythonでコマンドライン引数の扱い方


このシリーズは、そもそもPythonを使ってWindowsアプリを作りたいという想いから始まっています。
今回、ようやくPythonにWindows側からコマンドライン引数を渡して処理する方法を学びます。

Pythonにおいて、コマンドライン引数を扱う場合は
sys.argv を使います。

sysオブジェクトを使うには、
import sys をファイル冒頭に宣言する必要があります。

それでは早速sys.argv を使って引数を扱ってみましょう。


まずは至ってシンプルなコード。
コマンドライン引数をただprintするだけのコードです。

実行してみます。
Pythonでコマンド引数を扱う

引数が表示ささました。
[]でくくられています。
Pythonにおいて、コマンドライン引数はリストとして扱われるようです。

引数の内容を見てみましょう。

まずコマンドラインで指定したのは 1,2,3,4なのに、'E:\\work\\main.py' と表示されています。
これは実行したファイルのフルパスですが、Windows環境におけるPythonの引数0は実行パスが入っているということですね。

引数を処理するコード


Pythonでコマンドライン引数を受け取るプログラムを作るにあたって、
渡された引数をぶん回す処理を書いてみます。


これは、引数をとりあえずintに変換させて、表示するプログラムです。
intに変換出来ない場合は例外としてキャッチし、そのままcontinueしてエラーの内容を表示して、ループを継続させています。

実行結果はこちら
Pythonでコマンド引数を扱う

引数に1 2 3 a 4と渡しています。
数値ではない引数0番目の実行パスと「a」はエラーになるはず。

思いの通り表示されています。

プログラムコードの8行目
print("index:{0} value:{1} エラー発生:{2}".\
としているところ、これは本来であれば
print("index:{0} value:{1} エラー発生:{2}".format(i, v, str(type(err))))
と書きたいのですが、1行が長くなりすぎるので、次の行もプログラムの続きですよという「\」を付けて次の行に改行させています。
こうすることで、1行のプログラムを次の行に続けることができます。
見栄えの問題です。
C#で例えると「_」に該当します。

Pythonでコマンドライン引数を扱えるようになったら・・・


さて、今回の勉強でコマンドライン引数を扱う事ができるようになりました。

これで何ができるんか?っていうと、例えばファイルのパスを引き渡して、それを圧縮するなり、
加工するなり、動的にコネコネすることができるんですよ。
これってもうバッチファイルと同じ程度には何かできそうな予感がしませんか?

私はします。
夢が広がりますよね!

ファイルを右クリックして、「送る」フォルダにPythonプログラムを指定して、Pythonでファイルを圧縮する・・・
なんてこともできるかも。
できるでしょ。
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。