HoughLinesP の 引数 感度分析【 Python OpenCV 】
k.w
SEへの道
Python に限らず、 ファイル や フォルダ を参照することが必ずあります。Pyhonでは、容易に指定したファイルパスを参照し、ファイルをコントロールするライブラリがあります。標準ライブラリの os や 複数ファイルを扱う glob など紹介したいと思います。
プログラムを実行する時の基準になるフォルダを、カレントワーキングディレクトリ(カレントディレクトリ/ワーキングディレクトリ)と言います。(以下カレントディレクトリ)
ファイルを開いたり、フォルダを渡り歩いたりする際の起点となるフォルダです。
カレントディレクトリと同じフォルダにある、各種ファイルは、ファイルパスを指定せずに、処理(開く・書き込み・削除など)が可能です。
ただ、実際は、インプットファイルやアウトプットファイルなどは、異なるフォルダ(子フォルダや別ドライブ)にある場合がほとんどではないでしょうか?
異なるフォルダに存在するファイルやフォルダを意識しながらプログラミングは必要になるのですが、Pythonでは標準ライブラリで処理ができます。
また、同じフォルダや以下フォルダに含まれるファイルを繰り返し処理する場合のライブラリも準備されています。
以下にできることとサンプルコードを踏まえてご紹介します。
全てではありませんが、良く使う機能を紹介します。
import os
/* カレントディレクトリを調べる */
os.getcwd()
/* ->現在のカレントディレクトリを返す */
/* カレントディレクトリを変更する */
path = 'c:\\user\\taro\\mydocuments'
os.chdir(path)
/* ->pathフォルダをカレントディレクトリに変更する */
/* フォルダを作る */
os.makedirs('\\folder1\\folder2')
/* -> c:\\user\\taro\\mydocuments\\folder1\\folder2 */
/* -> folder1,folder2まで作られる */
/* ファイル名を取得する */
filepath = 'c:\\user\\taro\\mydocuments\\test.txt'
os.path.basename(filepath)
/* -> test.txt を返す */
/* フォルダパスを取得する */
os.path.basename(filepath)
/* -> c:\\user\\taro\\mydocuments を返す */
/* ファイルサイズを取得する */
os.path.getsize(filepath)
/* -> test.txtのファイルサイズを返す */
/* ファイル一覧を取得する */
os.listdir(path)
/* -> c:\\user\\taro\\mydocumentsに保存されているファイル一覧を表示する */
/* 応用:フォルダに含まれるファイルの合計ファイルサイズを取得する */
totalsize = 0 /* 初期化 */
for filename in os.listdir(filepath):
totalsize = totalsize + os.path.getsize(os.path.join(filepath,filename))
/* -> filepathに含まれるファイルサイズ合計を返す */
/* フォルダパスの検査 */
ngpath = c:\\user\\hanako\\mydocuments
os.path.exists(path)
/* -> True を返す */
os.path.exists(ngpath)
/* -> False を返す(存在しない場合を仮定) */
指定したフォルダパスだけでなく、以下子フォルダも含めて取得可能。
拡張子指定や、ファイル名指定など使い方で色々できます
/* globの使い方 */
import glob
path = 'c:\\user\\taro\\mydocuments'
files = glob.glob(path + '/*.txt')
/* -> mydocumentsフォルダの中の.txtファイルを取得する */
files = glob.glob(path + '/*/*.txt')
/* -> mydocumentsフォルダおよび子フォルダの中の.txtファイルを取得する */
/* 応用:.txtファイルのみ削除する */
for file in glob.glob(path + '/*.txt'):
os.remove(file)
/* -> mydocumentsフォルダの中の.txtファイルのみ削除される */