1. ホーム 
  2. 備忘録 
  3. Python

ファイル操作

ファイル操作

Pythonでよく使われる基本的な各種ファイル操作を以下に記載する

lesson.py

### 空のファイル作成
# 空のファイルを作成するのに昔は『ファイルを開いて閉じるだけ』をする必要があったが、
# Pathlibを使うと簡単に空のファイルが生成できるようになった
import pathlib
pathlib.Path('test.txt').touch()

### 基本的なファイルの操作
import os

# 対象のパスが存在するかどうか
print(os.path.exists('test.txt'))  # True

# 対象のパスがファイルかどうか
print(os.path.isfile('test.txt'))  # True

# 対象のパスがディレクトリかどうか
print(os.path.isdir('test'))  # False

# リネーム
os.rename('test.txt', 'renamed.txt')

# シンボリックリンク作成
# OSError: [WinError 1314] クライアントは要求された特権を保有していません。: 'renamed.txt' -> 'symlink.txt'
# 上記エラーが出る場合は PyCharm 等を管理者権限で起動する必要がある
os.symlink('renamed.txt', 'symlink.txt')

# ディレクトリ作成
os.mkdir('test_dir')
os.mkdir('list_dir')
os.mkdir('list_dir/list_dir2')

# 対象パス内のディレクトリをリスト化する
print(os.listdir('list_dir'))  # ['list_dir2']

# ディレクトリ削除
os.rmdir('test_dir')

### 中身が残っているディレクトリを削除
# os.rmdir は空になったディレクトリしか削除できない
# shutil.rmtree を使えば指定のツリー以下をすべて削除できる
# [注意] os.rmdir も shutil.rmtree もゴミ箱に入らず直接削除となるため注意すること
import shutil
shutil.rmtree('list_dir')

# ファイル削除
os.remove('renamed.txt')
os.remove('symlink.txt')

### ディレクトリの中身を確認する
import glob
os.mkdir('test_dir')
os.mkdir('test_dir/test_dir2')
pathlib.Path('test_dir/test_dir2/empty.txt').touch()
shutil.copy('test_dir/test_dir2/empty.txt',
            'test_dir/test_dir2/empty2.txt')
print(glob.glob('test_dir/test_dir2/*'))
# 結果
# ['test_dir/test_dir2\\empty.txt', 'test_dir/test_dir2\\empty2.txt']
# ↑ Windowsの場合、ファイルパスは \\ を使うかUnix系OSに合わせて/を使うか分かれる

ライブラリ名( os, pathlib, shutil, glob ) を覚えておけば、大体のファイル関連操作のやりたいことはこれらの中に含まれているので、検索時に見つけやすい