今回は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でファイル、ディレクトリ(フォルダ)のサイズを取得
0 件のコメント:
コメントを投稿