osモジュールとshutilモジュール
前にInkbirdの温度・湿度データをpythonで読み込む際、shutilモジュールでフォルダを中のファイルごと消せるということを紹介しました。
まだshutilモジュールの解説を書いていなかったので書きたいのですが、shutilモジュールは何がいいのか分かってもらうために、まずはosモジュールにある同じ様な機能を紹介していきます。
そしてshutilモジュールを紹介して、比較することにより、より理解が深まることでしょう。
ということで今回から数回に分けて、osモジュールを使ってファイルやフォルダを操作してみましょう。
ちなみにosモジュールでフォルダ間を移動したり、パスを表示したりというのは前に紹介していますので、良かったらこちらの記事もどうぞ。
また先に使いそうな操作も解説していますので、こちらの記事も参考にしてください。
練習用フォルダの準備
まずは色々と試していく上で、中身がぐちゃぐちゃになってもいいように、練習用のフォルダをお好きなところに適当にフォルダを作ってください。
私はデスクトップに「os_module_test」というフォルダを作りました。
もちろんフォルダを作っただけなので、中身は空です。
これでAnacondaを起動し、作ったフォルダに新しいPythonプログラムを作成します。
Anacondaの基本操作に関してはこちらの記事で解説していますので、良かったらこちらもどうぞ。
空のプログラムが開いたら、一行目でosモジュールをインポートします。
import os
そして「Shift + Enter」を押して実行します。
これで準備完了です。
ファイル・フォルダ名の取得:os.listdir(“パス”)
まずはファイル・フォルダの表示方法を試してみましょう。
現在いる場所(os_module_testフォルダ)のファイル・フォルダを表示を取得するには、os.listdir()を使います。
この場合、ファイル・フォルダ名はリスト化されます。
リストに関しての記事もありますので、良かったらどうぞ。
また表示するにはprint関数を用います。
print(os.listdir())
実行結果
['.DS_Store', 'Untitled.ipynb', '.ipynb_checkpoints']
実行結果で得られた’.DS_Sore’はMacが勝手に作る隠しフォルダなので気にしないでください。
また’.ipynb_checkpoints’はAnacondaが勝手に作る自動セーブ用フォルダですので、こちらも気にしないでください。
‘Untitled.ipynb’は今、色々いじっているPythonプログラムです。
ちなみにファイル、フォルダ名の最初にピリオド(.)が付いているものは隠しフォルダで通常はみることができないフォルダになります。
そのためFinderでフォルダを見てみると、’Untitled.ipynb’しかありません。
またos.listdir()の括弧の中にフォルダ名やパスを入力するとその場所のファイル・フォルダ名を取得することができます。
現在はフォルダがないので、後ほど試してみましょう。
フォルダの作成:os.mkdir(“フォルダ名”)
フォルダを作成するにはos.mkdir()を使います。
とりあえずfolder1というフォルダを作ってみましょう。
作るだけでは作成されたか分からないので、先ほどと同様にprint(os.listdir())でファイル・フォルダを表示させます。
os.mkdir("folder1")
print(os.listdir())
実行結果
['.DS_Store', 'Untitled.ipynb', '.ipynb_checkpoints', 'folder1']
確かにfolder1が作成されています。
ついでにfolder2というフォルダも作成しておきましょう。
os.mkdir("folder2")
print(os.listdir())
実行結果
['.DS_Store', 'Untitled.ipynb', 'folder2', '.ipynb_checkpoints', 'folder1']
ちなみにもうすでにある名前のフォルダを作成しようとするとエラーになりますので、注意してください。
試しにfolder2を作成したセルを再度実行してみます。
os.mkdir("folder2")
print(os.listdir())
実行結果
---------------------------------------------------------------------------
FileExistsError Traceback (most recent call last)
<ipython-input-7-f2bd33d9d50a> in <module>
----> 1 os.mkdir("folder2")
2
3 print(os.listdir())
FileExistsError: [Errno 17] File exists: 'folder2'
今回はまずはファイル・フォルダ操作の基本、ファイル・フォルダ名の取得と新規フォルダの作成を解説しました。
またファイル・フォルダ名の取得に関しては、ファイル名、フォルダ名別々に取得する方法もありますので、それはまた今度解説したいと思います。
次回はosモジュールではないのですが、ファイルの作成方法を解説します。
ということで今回はこんな感じで。
コメント