今回は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 件のコメント:
コメントを投稿