Αντιγραφή αρχείου σε Python: μέθοδος shutil.copy(), shutil.copystat().

⚡ Έξυπνη Σύνοψη

Python Η συνάρτηση shutil αντιγράφει αρχεία με την ενότητα shutil. Η συνάρτηση shutil.copy() αντιγράφει τα περιεχόμενα ενός αρχείου, ενώ η συνάρτηση shutil.copystat() αντιγράφει επίσης τα δικαιώματα, τον χρόνο τροποποίησης και τα μεταδεδομένα. Εδώ θα μάθετε και τις δύο μεθόδους με ένα παράδειγμα βήμα προς βήμα.

  • 📋 shutil.copy(): Η shutil.copy(src, dst) αντιγράφει τα περιεχόμενα ενός αρχείου σε έναν νέο προορισμό.
  • 🗂️ shutil.copystat(): Η shutil.copystat(src, dst) αντιγράφει επίσης τα δικαιώματα, την ώρα και τα μεταδεδομένα.
  • 🤖 Βοήθεια με την Τεχνητή Νοημοσύνη: Τα εργαλεία τεχνητής νοημοσύνης όπως το Copilot δημιουργούν άμεσα αντίγραφο κώδικα shutil.

Αντιγραφή αρχείου σε Python

Python Μέθοδοι αντιγραφής αρχείου

Python παρέχει ενσωματωμένες λειτουργίες για εύκολη αντιγραφή αρχείων χρησιμοποιώντας το Operating βοηθητικά προγράμματα System Shell.

Η ακόλουθη εντολή χρησιμοποιείται για την αντιγραφή αρχείου

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 Module για να δημιουργήσουμε ένα αντίγραφο του υπάρχοντος αρχείου. Εδώ χρησιμοποιούσαμε για να δημιουργήσουμε ένα αντίγραφο του υπάρχοντος αρχείου μας "guru99.txt".

Αντιγράψτε ένα αρχείο σε Python

Code εξήγηση

  • Πάρτε το αρχικό όνομα αρχείου "guru99.txt" και προσθέστε γράμματα .bak στο τέλος "guru99.txt.bak". Αυτό το όνομα με επέκταση .bak θα είναι το αντίγραφό μας
  • Και μετά θα χρησιμοποιήσουμε τη συνάρτηση αντιγραφής του βοηθητικού προγράμματος για να αντιγράψουμε από την πηγή στον προορισμό
  • Όταν εκτελείτε τον κώδικα, θα δείτε να δημιουργείται ένα διπλό αρχείο με επέκταση .bak στη δεξιά πλευρά του πίνακα

Βήμα 3) Αντιγράψτε τα μεταδεδομένα που σχετίζονται με το αρχείο, την άδεια αρχείου και άλλες πληροφορίες
Η λειτουργία αντιγραφής αντιγράφει μόνο το περιεχόμενο του αρχείου αλλά όχι άλλες πληροφορίες. Να αντιγράψω μετα-δεδομένα που σχετίζεται με το αρχείο, την άδεια αρχείου και άλλες πληροφορίες που πρέπει να χρησιμοποιήσετε "copystat" λειτουργία. Πριν εκτελέσουμε αυτόν τον κώδικα, πρέπει να διαγράψουμε το αρχείο αντιγραφής "guru99.text.bak".

Αντιγράψτε ένα αρχείο σε Python

Μόλις διαγράψετε το αρχείο και εκτελέσετε το πρόγραμμα, θα δημιουργήσει ένα αντίγραφο του αρχείου σας .txt αλλά αυτή τη φορά με όλες τις πληροφορίες όπως άδεια αρχείου, χρόνος τροποποίησης και πληροφορίες μεταδεδομένων. Μπορείτε να μεταβείτε στο κέλυφος του λειτουργικού σας συστήματος για να επαληθεύσετε τις πληροφορίες.

Αντιγράψτε ένα αρχείο σε 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). Χρησιμοποιούμε την ενότητα διαδρομής για να λάβουμε τις λεπτομέρειες της ώρας τροποποίησης του αρχείου και στη συνέχεια θα χρησιμοποιήσουμε το χρονικές τάξεις γ συνάρτηση χρόνου για να το μετατρέψετε σε αναγνώσιμο χρόνο. Έτσι, όταν εκτελούμε τον κώδικα, μπορούμε να δούμε ότι το αρχείο guru99.txt τροποποιήθηκε τελευταία φορά Δευτ. 8 Ιανουαρίουth στις 13:35 2018.
  • Code Γραμμή#17- Κάνει το ίδιο πράγμα δίνοντας πληροφορίες σχετικά με την τροποποίηση αρχείου, αλλά έχει διαφορετική μορφή για να την αναπαραστήσει. Εδώ χρησιμοποιούμε Λάβετε τη λειτουργία Modification Time (path.getmtime ("guru99.txt")). Τώρα αντί να χρησιμοποιήσουμε τη συνάρτηση χρόνου c που θα χρησιμοποιήσουμε Από τη λειτουργία Time Stamp και πρόκειται να κατασκευάσει ένα αντικείμενο ημερομηνίας ώρας. Στην έξοδο, μπορείτε να δείτε τις λεπτομέρειες του χρόνου τροποποίησης του αρχείου να εκτυπώνονται σε διαφορετική μορφή 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 autocomplete shutil.copy() και το copystat() καλούν και προτείνουν copy2() ή copytree() για την περίπτωσή σας.

Ναι. Τα εργαλεία με τεχνητή νοημοσύνη δημιουργούν ρουτίνες δημιουργίας αντιγράφων ασφαλείας, επιλέγουν τη σωστή μέθοδο shutil και προσθέτουν ελέγχους ύπαρξης πριν από την αντιγραφή αρχείων ή φακέλων.

Χρησιμοποιήστε την εντολή os.path.getmtime(path) για να λάβετε τη χρονική σήμανση και, στη συνέχεια, μετατρέψτε την με την εντολή time.ctime() ή την εντολή datetime.fromtimestamp() για μια αναγνώσιμη ημερομηνία.

Συνοψίστε αυτήν την ανάρτηση με: