ファイルをコピー Python: shutil.copy()、shutil.copystat() メソッド

⚡ スマートサマリー

Python shutilモジュールを使ってファイルをコピーします。shutil.copy()はファイルの内容を複製しますが、shutil.copystat()はパーミッション、更新日時、メタデータもコピーします。ここでは、両方のメソッドをステップバイステップの例で解説します。

  • ???? shutil.copy(): shutil.copy(src, dst) はファイルの内容を新しい宛先にコピーします。
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) は、パーミッション、時間、メタデータもコピーします。
  • 🤖 AIによる支援: CopilotのようなAIツールは、shutilコピーコードを瞬時に生成します。

ファイルをコピー Python

Python ファイルのコピー方法

Python ファイルを簡単にコピーするための組み込み機能を提供します Operaシステム シェル ユーティリティを使用します。

ファイルをコピーするには次のコマンドを使用します

shutil.copy(src,dst)

メタデータ情報を含むファイルをコピーするには、次のコマンドを使用します。

shutil.copystat(src,dst)

ファイルをコピーする方法 Python

ファイルをコピーする手順は次のとおりです。 Python shutil copy() メソッドを使用する:

ステップ1) 現在のディレクトリ内の元のパスを取得します
ファイルをコピーする前に、現在のディレクトリにある元のファイルへのパスを取得する必要があります。 コード内 –

  1. 変数の宣言
  2. 変数に分割関数を適用する

ファイルをコピーする Python

Code 説明

  • まず、「guru99.txt」ファイルが存在するかどうかを確認します。 先ほど guru99.txt ファイルを作成したので、それが存在することはわかっているので、さらにコードを進めます。
  • ファイルパスを変数「」に保存します。SRC” ファイルが存在する場合
  • パスを取得したら、パスとファイル名を分離します。
  • そのために、分割を使用します path.split ソース変数の関数
  • Code 実行すると「ファイル名"と"ファイルパス" 別々に

ステップ2) shutil モジュールを使用して既存のファイルのコピーを作成します
Shutil モジュールを使用して、既存のファイルのコピーを作成します。 ここでは、既存のファイル「guru99.txt」のコピーを作成していました。

ファイルをコピーする Python

Code 説明

  • 元のファイル名「guru99.txt」の末尾に .bak の文字を追加した「guru99.txt.bak」となります。 .bak 拡張子が付いたこの名前が複製コピーになります。
  • 次に、ユーティリティのコピー機能を使用して、ソースから宛先にコピーします。
  • コードを実行すると、拡張子 .bak を持つ重複ファイルがパネルの右側に作成されることがわかります。

ステップ3) ファイルに関連付けられたメタデータ、ファイル権限、その他の情報をコピーします
コピー機能はファイルの内容のみをコピーしますが、他の情報はコピーしません。 コピーする メタデータ ファイル、ファイルの権限、および使用する必要があるその他の情報に関連付けられています。コピースタット" 関数。 このコードを実行する前に、コピー ファイル「guru99.text.bak」を削除する必要があります。

ファイルをコピーする Python

ファイルを削除してプログラムを実行すると、.txt ファイルのコピーが作成されますが、今回は次のようなすべての情報が含まれます。 ファイルのパーミッション、変更時刻、メタデータ情報。 OS シェルに移動して情報を確認できます。

ファイルをコピーする Python

これがコードです

import os
import shutil
from os import path

def main():
    # make a duplicate of an existing file
	if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

ステップ4) 情報を取得する
最後に変更されたテキストファイルに関する情報を取得できます

ファイルをコピーする Python

  • Code 15行目 - .txtファイル(guru99)が最後に変更された日時(日、月、年、時刻)を示します。pathモ​​ジュールを使用してファイル変更時刻の詳細を取得し、次に 時間クラス c 時間関数 これを読み取り可能な時刻に変換します。コードを実行すると、ファイルguru99.txtが最後に変更された日時がわかります。 8月XNUMX日(月)th 13年35時2018分。
  • Code 17行目 - ファイルの変更に関する情報を提供するという点では同じですが、表現方法が異なります。ここでは、 変更時刻の取得関数 (path.getmtime(“guru99.txt”))。 ここで、c time 関数を使用する代わりに、次の関数を使用します。 タイムスタンプ機能から そして、日時オブジェクトを構築します。 出力では、ファイル変更時刻の詳細が異なる形式で出力されていることがわかります。 2018-01-08, 13:35:51.334072

これがコードです

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

よくあるご質問

shutilをインポートし、shutil.copy(src, dst)を呼び出してファイルの内容をコピーします。shutil.copystat()を使用すると、メタデータもコピーできます。

shutil.copystat(src, dst) は、ファイルのパーミッション、変更日時、メタデータを宛先にコピーしますが、ファイルの内容はコピーしません。

shutil.copy() はコンテンツとパーミッションをコピーしますが、shutil.copy2() はタイムスタンプなどのメタデータも保持します。更新日時を保持するには copy2() を使用してください。

shutil.copy() はディレクトリの保存先を受け取り、パーミッションもコピーします。shutil.copyfile() はファイルの完全なパスを必要とし、ファイルの内容のみをコピーします。

shutil.copytree(src, dst) を使用すると、ディレクトリ全体とその内容を再帰的にコピーできます。コピー先のフォルダは既に存在していない必要があります。

GitHub CopilotのようなAIアシスタントは、shutil.copy()やcopystat()の呼び出しを自動補完し、あなたのケースに合わせてcopy2()やcopytree()を提案します。

はい。AI搭載ツールはバックアップルーチンを生成し、適切なshutilメソッドを選択し、ファイルやフォルダをコピーする前に存在チェックを追加します。

os.path.getmtime(path) を使用してタイムスタンプを取得し、time.ctime() または datetime.fromtimestamp() を使用して読みやすい日付に変換します。