0
0

ターミナルからフォルダ名・ファイル名にアクセスする

Posted at

ターミナルにコマンドを打ち込むことによって、PC内のフォルダやファイルにアクセスする方法を最近勉強したのでまとめました。

今回の記事の知識を利用してできること

複数のディレクトリの中から特定のファイルのみを抜き出し、別のディレクトリにまとめる。

(1)特定のファイルのみを探してくる

いくつかやり方はあるようです。具体的には

  • osモジュール
  • globモジュール
  • pathlibモジュール

などが挙げられます。

どうやらpathlibモジュールはPython3.4から追加された新しいモジュールのようです。
本記事ではpathlibモジュールを用いる方法を中心に取り上げます。

pathlibモジュールを使ってディレクトリ内の特定のファイルを検索する

pathlibを使うのに追加インストールは不要ですが import は必要です。

import pathlib

例えば以下のようなディレクトリ・ファイルがあるとします。

fruits/
     ├─ apple.csv
     ├─ banana.txt
     └─ cherry.csv

fruitsディレクトリ内にあるCSVファイルを検索する時は以下のようにpathlibモジュールのglobメソッド(≠globモジュール)を使用します。

p = pathlib.Path('./fruits') # この行でどこのディレクトリを検索するか指定する
# これを「Pathオブジェクトを生成する」と呼ぶ

for name in p.glob('*.csv'):
  print(name)
# * は正規表現で「どんな文字列が入っても良い」という意味

>> ./fruits/apple.csv
>> ./fruits/cherry.csv

(2)探してきたファイルを新しく作ったディレクトリに移動する。

現在、以下のようなファイル・ディレクトリの構造になっているとします。

food
└──fruits/
   ├─ apple.csv
   ├─ banana.txt
   └─ cherry.csv

ディレクトリの作成にはosモジュールを使用します。

import os 

os.makedirs('food/dessert', exist_ok=True)

すると以下のようなファイル・ディレクトリの構造になります。

food
├── fruits/
│   ├─ apple.csv
│   ├─ banana.txt
│   └─ cherry.csv
└── dessert/

ファイルの移動にはshutilモジュールを用います。
shutil.move() の第一引数に移動させたいファイルやディレクトリのパスを、第二引数に移動先のディレクトリのパスを指定します。

移動させたいファイルが一つだけの場合は以下のようなコードを書くとファイルを移動させることができます。

import shutil

new_path = shutil.move('food/fruits/apple.csv', 'food/dessert/')
print(new_path)

>> food/dessert/apple.csv

複数のファイルを移動させたい場合は以下のようなコードを書くと良いです。

p = pathlib.Path('./fruits') 
for name in p.glob('*'.csv):
    new_path = shutil.move 

参考文献

"[Python] ファイル名やフォルダ名の一覧を取得する". Hbk project. 2019/07/13. https://hibiki-press.tech/python/os-listdir-glob-glob-os-wal/1323#toc7, (2022/12/17).

"Pythonにおけるpathlibモジュールの利用方法を現役エンジニアが解説【初心者向け】". TechAcademy. 2018/02/05. https://magazine.techacademy.jp/magazine/29056, (2022/12/29).

nkmk. "Python, pathlibでファイル一覧を取得(glob, iterdir)". note.nkmk.me. 2018/10/01. https://note.nkmk.me/python-pathlib-iterdir-glob/, (2022/12/17).

TATSUO IKURA. "条件に一致するファイルやディレクトリの一覧を取得する(pathlibモジュール)". Java Drive. https://www.javadrive.jp/python/file/index15.html, (2022/12/17).

nkmk. "Pythonでファイル・ディレクトリを移動するshutil.move". note.nkmk.me. 2018/09/26. https://note.nkmk.me/python-shutil-move/, (2022/12/17).

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0