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

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

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

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

shutil.copy(src,dst)

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

shutil.copystat(src,dst)

Πώς να αντιγράψετε ένα αρχείο σε Python

Ακολουθούν τα βήματα για την αντιγραφή του αρχείου Python χρησιμοποιώντας τη μέθοδο shutil copy():

Βήμα 1) Καταγράψτε την αρχική διαδρομή στον τρέχοντα κατάλογο
Πριν αντιγράψουμε ένα αρχείο, πρέπει να πάρουμε τη διαδρομή προς το αρχικό αρχείο στον τρέχοντα κατάλογο. Στον κωδικό -

  1. Δήλωση μεταβλητής
  2. Εφαρμογή συνάρτησης διαχωρισμού σε μεταβλητή

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

Επεξήγηση κώδικα

  • Πρώτα θα ελέγξουμε εάν το αρχείο μας "guru99.txt" υπάρχει ή όχι. Εφόσον δημιουργήσαμε νωρίτερα το αρχείο guru99.txt, γνωρίζουμε ότι υπάρχει και θα συνεχίσουμε περαιτέρω με τον κώδικα
  • Αποθηκεύουμε τη διαδρομή αρχείου στη μεταβλητή "src" εάν υπάρχει το αρχείο σας
  • Μόλις λάβουμε τη διαδρομή, θα διαχωρίσουμε τη διαδρομή και το όνομα του αρχείου
  • Για αυτό, θα χρησιμοποιήσουμε τη διάσπαση path.split συνάρτηση στη μεταβλητή πηγής
  • Ο κώδικας κατά την εκτέλεση εκτυπώνεται "όνομα του αρχείου"Και"διαδρομή αρχείου” ξεχωριστά

Βήμα 2) Δημιουργήστε ένα αντίγραφο του υπάρχοντος αρχείου μας χρησιμοποιώντας τη λειτουργική μονάδα shutil
Χρησιμοποιούμε το Shutil Module για να δημιουργήσουμε ένα αντίγραφο του υπάρχοντος αρχείου. Εδώ χρησιμοποιούσαμε για να δημιουργήσουμε ένα αντίγραφο του υπάρχοντος αρχείου μας "guru99.txt".

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

Επεξήγηση κώδικα

  • Πάρτε το αρχικό όνομα αρχείου "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

  • Γραμμή κώδικα#15- Δηλώνει την ημέρα, την ημερομηνία, τον μήνα, το έτος και την ώρα κατά την τελευταία τροποποίηση του αρχείου .txt (guru99). Χρησιμοποιούμε τη μονάδα διαδρομής για να λάβουμε τις λεπτομέρειες του χρόνου τροποποίησης του αρχείου και, στη συνέχεια, θα χρησιμοποιήσουμε το χρονικές τάξεις γ συνάρτηση χρόνου για να το μετατρέψετε σε αναγνώσιμο χρόνο. Έτσι, όταν εκτελούμε τον κώδικα, μπορούμε να δούμε ότι το αρχείο guru99.txt τροποποιήθηκε τελευταία φορά Δευτ. 8 Ιανουαρίουth στις 13:35 2018.
  • Γραμμή κώδικα#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.copy (src,dst)
  • Για να αντιγράψετε όλες τις πληροφορίες του αρχικού αρχείου σε διπλότυπο αρχείο όπως άδεια αρχείου, χρόνος τροποποίησης ή πληροφορίες μεταδεδομένων χρησιμοποιώντας τον κωδικό shutil.copystat(src,dst)