🌊

pythonでのファイル操作を0から学んでいく

2022/10/31に公開約2,100字

introduction

自分の研究でOSモジュールを使う事になり、なんか中身が見えなくて気持ち悪い、、、と思いながら適当に使っていたんだけど、前もグラフの使い方をまとめたら簡単に使えるようになったから、ファイル操作も記事を書いたら簡単に理解できるんじゃね?と思ってこれを書いていく。基本的にはkinocodeさんの動画をみつつ、そこから自分なりに考えたことを付け足していく方式でやっていくので、もしも分かりづらいなぁ...とおもったらkinocodeさんの動画を見るといい。

https://www.youtube.com/watch?v=PV53-nTFE0w

ディレクトリ名・フォルダ名の確認

ホームディレクトリの確認

ホームディレクトリ確認
import os
print(os.environ['HOME'])

ホームディレクトリを確認するには、environメソッドを用いる。environメソッドに関しては以下の参考サイトに述べられているように、importしたファイルのディレクトリ構造をosオブジェクトに収納しているようだ。とりあえずディレクトリ構造を確認したいとなればos.environ['HOME']だ。
https://note.nkmk.me/python-os-environ-getenv/

現在のディレクトリを確認する

現在のディレクトリの確認
import os
print(os.getcwd())

os.getcwd()→getCurrentWorkingDirectoryの略。これによって、今どの環境で作業しているのかが理解することが出来る。

ついでに→path.joinを用いることによって、pathを更に変更することが出来る。詳しくはkinocodeさんの動画参照。

ディレクトリの移動

現在のディレクトリの確認
import os
print(os.chdir('path'))

chdir→changedirectoryの略。相対パスでも絶対パスでも、pathを与えてやればどこでも移動することが出来る。
上の3つの方法を用いることによって、workingdirectoryをhome directoryに変更することが出来る。

import os
home = os.environ['HOME']
os.chdir(home)
print(os.getcwd())

ディレクトリ内にあるファイル名を配列で取得する

現在のディレクトリの確認
import os
print(os.listdir('path'))

これによって、ディレクトリ内のファイルを取得することが出来る。これはファイルもディレクトリもとってきてしまうので、ディレクトリのみとっておきたい場合やファイルのみとっておきたい場合には以下のようにlist内をfor文で回して、

ファイルのみを取得
file_list=[]
for i in os.listdir('./sample'):
	if os.path.isfile(os.path.join('./sample',i)):
	file_list.append(i)
print(file_list)

とすることができる。もしもディレクトリを取得したいなら、isdirを使えばよい。

ディレクトリ内の特定の拡張子のファイル名を取得する

現在のディレクトリの確認
import glob
print(glob.glob('./For-test/test/*.txt'))

glob関数はもともとディレクトリ内のファイルを正規表現によって絞って表示する関数であり、正規表現でバリデーションを行う方法は詳しくはいかに解説してある。今回用いたのはglobモジュール内のglobメソッドで、これはリストを返してくれるので汎用性が高い。

https://note.nkmk.me/python-glob-usage/

フォルダの中身を確認する

フォルダの中身を確認
import os

for dir,subdir,files in os.walk('For_test'):
    print('------')
    print(dir)
    print(subdir)
    print(files)

これによって、再帰的にフォルダの中身を確認することが出来る。

一旦

研究に用いるのはココまでだと思う。おそらく仕事でもファイル操作の頻度がどんどん上がってくると思われるので、その際に続きを書いていこうと思う。

気づいたこと

pythonってスネークケースとキャメルケースしかないんだね。。。なんかケバブケースで変数書こうと思ったらエラー吐いて、ん????ってなったわ。おもろ。

Discussion

ログインするとコメントできます