こんにちは。のっくん(@yamagablog)です。
この記事では、Pythonでファイルを操作(移動、コピー、削除)する方法をご紹介します。
「大量のファイルを移動させたい、コピーさせたい」
そんな時はPythonで書くのがオススメですよ。
目次
ファイルのコピー、移動
shutil(shell utilities)はファイル操作用のモジュールです。ファイルをdeliciousディレクトリにコピー、移動させてみます。
ファイルのコピー
import shutil shutil.copy('/home/matsu/meat.txt','/home/matsu/delicious')
ファイルの移動
import shutil shutil.move('/home/matsu/try.txt','/home/matsu/delicious')
ファイルをゴミ箱に移動する
ハードディスクから削除するのではなく、ゴミ箱に移動させるコードを書いてみましょう。
send2trashというモジュールを使います。
import send2trash #ファイルを作成する with open('bacon.txt','a') as bacon_file: bacon_file.write('Bacon is not Vegetable.') #ファイルをゴミ箱に移動する send2trash.send2trash('bacon.txt')
openの時に指定しているa(append)は追記するという意味ですが、ファイルが存在しなければ新規に作ってくれます。
ディレクトリツリーを表示する
ディレクトリを指定して、その中に入っているサブフォルダやファイルを全て表示させたい時があります。
普通はこのプログラムを書くのは大変ですが、pythonだと簡単に実行できます。
まずは、Ubuntuで適当なフォルダdeliciousを作ります。その下にフォルダとファイルを適当に作成して以下のような構成にしました。
matsu@nuc5i5ryh:~/delicious$ tree . ├── cats │ └── catnames.txt ├── dogs │ └── dognames.txt └── spam.txt
treeコマンドは「sudo apt install tree」でインストールできます。
Ubuntu18.04で「Unable to locate package」エラーが出る場合は、下のようにuniverseレポジトリを追加してから実行しましょう。
matsu@nuc5i5ryh:~/delicious$ cat /etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe matsu@nuc5i5ryh:~/delicious$ sudo apt update
それではPythonでコードを書いてみます。
import os for foldername,subfolders,filenames in os.walk('/home/matsu/delicious'): print('現在のディレクトリは「{}」です'.format(foldername)) for subfolder in subfolders: print('サブフォルダは「{}」です'.format(subfolder)) for filename in filenames: print('ファイル名は「{}」です'.format(filename)) print('')
実行すると以下の通りに出力されます。
現在のディレクトリは「/home/matsu/delicious」です サブフォルダは「cats」です サブフォルダは「dogs」です ファイル名は「spam.txt」です 現在のディレクトリは「/home/matsu/delicious/cats」です ファイル名は「catnames.txt」です 現在のディレクトリは「/home/matsu/delicious/dogs」です ファイル名は「dognames.txt」です
まとめ
・send2trashモジュールを使うと、ゴミ箱に移動ができる
・os.walk()関数を使うと、ディレクトリの中身を全て表示できる