Pythonでファイル操作 コピー/移動/削除/ファイル名取得/一覧取得/存在確認/サイズ取得

2021年5月29日土曜日

Python ファイル

t f B! P L

今回はPythonで詳しいファイル操作について紹介したいと思います。

ファイルのコピー

import shutil #ライブラリをインポート
shutil.copy('test.txt', 'copy.txt') #(コピー元、コピー先)

普通にコピーをするにはshutil.copy()を利用します。しかし、このコードでは作成日や作成者などのメタデータはコピーされません。
メタデータまでコピーするにはshutil.copy2()を利用します。

import shutil
shutil.copy2('file.png', 'copy.png')

フォルダごとコピー

フォルダをコピーするにはshutil.copytree()を使います。
import shutil
shutil.copytree("dir1","dir2")

ファイルの移動

ファイルの移動

ファイルを移動する際もshutilライブラリを利用します。

import shutil
shutil.move("file.txt","dir") #移動元のファイル名、移動先のフォルダ名

名前を変更しつつ移動

import shutil
shutil.move("file.txt","dir/copy.txt")
フォルダごと移動する際も同じようにコードを書きます。

ファイルの削除

ファイルを削除する際はosライブラリを利用します。

import os
os.remove("file")

フォルダごと削除

ファイルの削除とは違い、フォルダごと削除する場合は、shutil.rmtree()を利用します。

import shutil
shutil.rmtree("dir")

パスからファイル名を取得

どういうことかというと、「C:\Users\xxxx\Desktop\abc.txt」があったとしてそこから「abc.txt」の部分だけ取り出すということです。
ファイル名操作については、os.pathを利用します。

import os.path
name = os.path.basename("C:\\Users\\xxxx\\Desktop\\abc.txt")
print(name)
#abc.txt

パスからフォルダ名を取得

これは、「C:\Users\xxxx\Desktop\abc.txt」から「C:\Users\xxxx\Desktop」の部分のみ取り出すということです。

import os.path
dirname = os.path.dirname("C:\\Users\\xxxx\\Desktop\\abc.txt")
print(dirname)
#C:\Users\xxxx\Desktop

拡張子を取得 / 拡張子を外す

import os.path
root, ext = os.path.splitext("sample/file.txt")
print(root) #sample/file
print(ext)   #.txt

フォルダのなかファイル一覧を取得

import glob
filelist = glob.glob("sampledir/*")
for i in filelist:
    print(i)

これについてはまた今度、別の記事で詳しく紹介したいと思います。

サブフォルダ内までまんべんなく取得

import os
import glob
found = []
for root, dirs, files in os.walk("C:\\Users\\xxxx\\Desktop"):
    for filename in files:
        found.append(os.path.join(root, filename))
for i in found:
    try:
        print (i)
    except UnicodeError:
        print ("UnicodeError")

ファイルの存在確認

ファイルが存在するか確認する

import os.path
if os.path.isfile("file.txt"):
    print("ファイルが存在します")
else:
    print("ファイルが存在しません")

ファイルの存在を確認するにはos.path.isfileを利用します。存在していれば、True,でなければFalseが返されます。
これは、別のものと組み合わせて使うと便利かもしれません。

フォルダが存在するか確認

import os.path
if os.path.isdir("sampledir"):
    print("フォルダが存在します")
else:
    print("フォルダが存在しません")

フォルダの存在確認も使い方はファイルのときと同じです。

ファイルサイズを取得

import os.path
size = os.path.getsize("filename")
print(size)
単位はバイトです。
キロバイトにするにはsizeを1024で割ります。

フォルダのサイズを取得

残念ながら、すぐに取得できる便利な関数はありませんでした。少し長いですが、以下のコードで取得できます。

import os
def get_dir_size(path='.'):
    total = 0
    with os.scandir(path) as it:
        for entry in it:
            if entry.is_file():
                total += entry.stat().st_size
            elif entry.is_dir():
                total += get_dir_size(entry.path)
    return total
print(get_dir_size('sampledir'))

今回はここまで。以下の記事を参考にさせていただきました。
Pythonでファイル、ディレクトリ(フォルダ)のサイズを取得

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ