คัดลอกไฟล์เข้า Python: Shutil.copy(), Shutil.copystat() วิธีการ

⚡ สรุปอย่างชาญฉลาด

Python โมดูล shutil ใช้สำหรับคัดลอกไฟล์ เมธอด shutil.copy() จะคัดลอกเนื้อหาของไฟล์ ในขณะที่ shutil.copystat() จะคัดลอกสิทธิ์การเข้าถึง เวลาแก้ไข และข้อมูลเมตาด้วย ในที่นี้คุณจะได้เรียนรู้ทั้งสองวิธีพร้อมตัวอย่างทีละขั้นตอน

  • 📋 shutil.copy(): shutil.copy(src, dst) คัดลอกเนื้อหาของไฟล์ไปยังปลายทางใหม่
  • 🗂️ shutil.copystat(): shutil.copystat(src, dst) ยังคัดลอกสิทธิ์การเข้าถึง เวลา และข้อมูลเมตาด้วย
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI เช่น Copilot สามารถสร้างรหัสสำเนา Shutil ได้ทันที

คัดลอกไฟล์เข้า Python

Python วิธีการคัดลอกไฟล์

Python มีฟังก์ชันในตัวเพื่อการคัดลอกไฟล์ได้อย่างง่ายดายโดยใช้ Operaการใช้ยูทิลิตี้ System Shell

คำสั่งต่อไปนี้ใช้ในการคัดลอกไฟล์

shutil.copy(src,dst)

คำสั่งต่อไปนี้ใช้ในการคัดลอกไฟล์ที่มีข้อมูลเมตาดาต้า

shutil.copystat(src,dst)

วิธีคัดลอกไฟล์ใน Python

ต่อไปนี้เป็นขั้นตอนการคัดลอกไฟล์ Python โดยใช้เมธอด Shutil Copy():

ขั้นตอน 1) บันทึกเส้นทางดั้งเดิมในไดเร็กทอรีปัจจุบัน
ก่อนที่เราจะคัดลอกไฟล์ เราจำเป็นต้องได้รับเส้นทางไปยังไฟล์ต้นฉบับในไดเร็กทอรีปัจจุบัน ในรหัส -

  1. การประกาศตัวแปร
  2. การใช้ฟังก์ชันแยกกับตัวแปร

คัดลอกไฟล์ใน Python

Code คำอธิบาย

  • ก่อนอื่นเราจะตรวจสอบว่ามีไฟล์ “guru99.txt” ของเราอยู่หรือไม่ เนื่องจากเราได้สร้างไฟล์ guru99.txt ไว้ก่อนหน้านี้ เราจึงรู้ว่ามีอยู่จริง และเราจะดำเนินการโค้ดต่อไป
  • เราเก็บเส้นทางของไฟล์ไว้ในตัวแปร “สิ่งอำนวยความสะดวก” หากไฟล์ของคุณมีอยู่
  • เมื่อเราได้เส้นทางแล้ว เราจะแยกเส้นทางและชื่อไฟล์
  • เพื่อสิ่งนั้น เราจะใช้การแยก path.split ฟังก์ชั่นกับตัวแปรต้นทาง
  • Code เมื่อดำเนินการแล้วจะพิมพ์ออกมาว่า “ชื่อไฟล์"และ"พา ธ ไฟล์” แยกกัน

ขั้นตอน 2) สร้างสำเนาของไฟล์ที่มีอยู่ของเราโดยใช้โมดูล shutil
เราใช้ Shutil Module เพื่อสร้างสำเนาของไฟล์ที่มีอยู่ ที่นี่เราใช้ในการสร้างสำเนาของไฟล์ที่มีอยู่ของเรา “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 มกราคม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) เพื่อคัดลอกทั้งไดเร็กทอรีและเนื้อหาภายในแบบเรียกซ้ำ โฟลเดอร์ปลายทางต้องไม่มีอยู่แล้ว

ผู้ช่วย AI เช่น GitHub Copilot จะเติมคำอัตโนมัติสำหรับการเรียกใช้ shutil.copy() และ copystat() และแนะนำ copy2() หรือ copytree() ให้เหมาะสมกับกรณีของคุณ

ใช่แล้ว เครื่องมือที่ขับเคลื่อนด้วย AI จะสร้างขั้นตอนการสำรองข้อมูล เลือกวิธีการสำรองข้อมูลที่เหมาะสม และเพิ่มการตรวจสอบการมีอยู่ของไฟล์หรือโฟลเดอร์ก่อนที่จะคัดลอกไฟล์หรือโฟลเดอร์เหล่านั้น

ใช้ os.path.getmtime(path) เพื่อรับค่า timestamp จากนั้นแปลงค่าด้วย time.ctime() หรือ datetime.fromtimestamp() เพื่อให้ได้วันที่ที่อ่านได้

สรุปโพสต์นี้ด้วย: