Πώς να χειριστείτε αρχεία στην Python

Σε οποιαδήποτε γλώσσα προγραμματισμού, ο χειρισμός αρχείων είναι μια σημαντική πτυχή. Και η Python υποστηρίζει επίσης την εργασία με αρχεία σε διαφορετικούς τρόπους λειτουργίας—όπως ανάγνωση και εγγραφή σε αρχεία και πολλά άλλα.

Μέχρι το τέλος αυτού του σεμιναρίου, θα είστε σε θέση να:

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

Πώς να διαβάσετε ένα αρχείο στην Python

Για να ανοίξετε ένα αρχείο στην Python, μπορείτε να χρησιμοποιήσετε τη γενική σύνταξη: open(‘file_name’,’mode’).

  • Εδώ, file_name είναι το όνομα του αρχείου.

Σημείωση: Εάν το αρχείο που θέλετε να ανοίξετε βρίσκεται στον τρέχοντα κατάλογο εργασίας, μπορείτε να αναφέρετε μόνο το όνομα του αρχείου. Εάν βρίσκεται σε άλλο φάκελο στο περιβάλλον εργασίας σας, θα πρέπει να συμπεριλάβετε τη διαδρομή προς το αρχείο.

  • Η λειτουργία παραμέτρων καθορίζει τη λειτουργία με την οποία θέλετε να ανοίξετε το αρχείο.

Η προεπιλεγμένη λειτουργία για το άνοιγμα ενός αρχείου διαβάζεται—δηλώνεται με το γράμμα ‘r’. Ωστόσο, συνιστάται να προσδιορίζετε ρητά τη λειτουργία.

Πριν ξεκινήσουμε, ας ρίξουμε μια ματιά στο αρχείο lib.txt, το οποίο θα χρησιμοποιήσουμε σε αυτό το παράδειγμα.

📁 Κατεβάστε το αρχείο κειμένου και τον κώδικα που χρησιμοποιούνται σε αυτό το σεμινάριο από αυτό το αποθετήριο GitHub.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ανοίξετε ένα αρχείο κειμένου ‘lib.txt’ στην Python χρησιμοποιώντας τη συνάρτηση open() και να διαβάσετε τα περιεχόμενά του.

file = open('lib.txt','r')
contents = file.read()
print(contents)
file.close()


# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Στο παραπάνω παράδειγμα,

  • Η συνάρτηση open() επιστρέφει ένα αντικείμενο αρχείου και επιλέγουμε να το ονομάσουμε αρχείο.
  • Στη συνέχεια, καλούμε τη μέθοδο read() στο αρχείο.
  • Το περιεχόμενο της μεταβλητής περιέχει τώρα το περιεχόμενο του αρχείου. Και το εκτυπώνουμε.
  • Τέλος, κλείνουμε το αρχείο.
  Κλείστε τα παράθυρα όταν κλείνετε το καπάκι του φορητού υπολογιστή σας

Ωστόσο, εάν ξεχάσετε να κλείσετε το αρχείο, θα υπάρξει πιθανή σπατάλη πόρων. Εάν εργάζεστε με μεγάλο αριθμό τέτοιων αρχείων, μπορεί να υπάρξει σημαντική χρήση μνήμης. Αυτό συμβαίνει επειδή έχετε ανοίξει πολλά αρχεία αλλά δεν έχετε κλείσει κανένα από αυτά.

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

with open('lib.txt','r') as f:
  contents = f.read()
  print(contents)

Όταν χρησιμοποιείτε διαχειριστές επαφών για εργασία με αρχεία, δεν χρειάζεται να χρησιμοποιήσετε τη μέθοδο close(). Τα αρχεία κλείνουν αυτόματα μετά την ολοκλήρωση της λειτουργίας I/O.

Πώς να διαβάσετε γραμμές από αρχείο στην Python

Στο δείγμα αρχείου κειμένου μας, είχαμε μόνο λίγες γραμμές. Επομένως, η ανάγνωση όλων των περιεχομένων του αρχείου ταυτόχρονα δεν ήταν πρόβλημα.

Ωστόσο, όταν χρειάζεται να διαβάσετε σε μεγάλα αρχεία, η χρήση της μεθόδου read(), όπως φαίνεται παραπάνω, ενδέχεται να μην είναι πολύ αποτελεσματική.

Στην πραγματικότητα, εάν το αρχείο κειμένου είναι πολύ μεγάλου μεγέθους, μπορεί σύντομα να ξεμείνετε από μνήμη. Γι’ αυτό μπορεί να θέλετε να διαβάσετε σε γραμμές μόνο για ανάγνωση από ένα αρχείο κειμένου και θα μάθετε πώς να το κάνετε αυτό σε αυτήν την ενότητα.

Χρησιμοποιώντας τη μέθοδο readline() της Python για την ανάγνωση γραμμών από το αρχείο

Η μέθοδος readline() διαβάζει μία γραμμή κάθε φορά, από το αρχείο.

Εκτελέστε το παρακάτω απόσπασμα κώδικα.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  line = f.readline()
  print(line)


# Output
Hello, there!

Here are a few helpful Python libraries:

Μπορείτε να δείτε ότι μετά την πρώτη κλήση της μεθόδου readline(), εκτυπώνεται η πρώτη γραμμή στο αρχείο. Και η δεύτερη κλήση στη μέθοδο readline() επιστρέφει τη δεύτερη γραμμή στο αρχείο.

Αυτό συμβαίνει επειδή, μετά την κλήση της πρώτης μεθόδου, ο δείκτης αρχείου βρίσκεται στην αρχή της δεύτερης γραμμής.

Στην Python, μπορείτε να χρησιμοποιήσετε τη μέθοδο tell() για να λάβετε την τρέχουσα θέση του δείκτη του αρχείου. Και για να μετακινήσετε τον δείκτη του αρχείου σε μια συγκεκριμένη θέση, μπορείτε να χρησιμοποιήσετε τη μέθοδο seek().

Στο παρακάτω απόσπασμα κώδικα, χρησιμοποιούμε f.seek(0) μετά την πρώτη κλήση μεθόδου. Αυτό μετακινεί τον δείκτη του αρχείου στην αρχή του αρχείου κειμένου. Γι’ αυτό και τις δύο φορές εκτυπώνεται η πρώτη γραμμή του αρχείου.

with open('lib.txt','r') as f:
  line = f.readline()
  print(line)
  f.seek(0)
  line = f.readline()
  print(line)


# Output
Hello, there!

Hello, there!

Χρησιμοποιώντας τη μέθοδο readlines() της Python για την ανάγνωση γραμμών από το αρχείο

Υπάρχει μια άλλη στενά συνδεδεμένη μέθοδος που ονομάζεται readlines().

  Δοκιμή αποδοχής χρήστη (UAT): Τι είναι;

Όταν εκτελείτε το ακόλουθο απόσπασμα κώδικα, θα δείτε ότι η μέθοδος readlines() επιστρέφει μια λίστα με όλες τις γραμμές του αρχείου.

with open('lib.txt','r') as f:
  lines = f.readlines()
  print(lines)


# Output
['Hello, there!n', 'Here are a few helpful Python libraries:n', 
'1) NumPyn', '2) pandasn', '3) matplotlibn', 
'4) seabornn', '5) scikit-learnn', '6) BeautifulSoupn', 
'7) Scrapyn', '8) nltkn', '9) Bokehn', '10) statsmodelsn', 'n']

Χρήση Python’s for Loop για ανάγνωση γραμμών από αρχείο

Για να διαβάσετε τις γραμμές από ένα αρχείο κειμένου, θα μπορούσατε επίσης να χρησιμοποιήσετε τον βρόχο for.

Μόλις έχετε ένα αντικείμενο αρχείου, μπορείτε να χρησιμοποιήσετε το for loop για να επαναλάβετε τα περιεχόμενα του αρχείου—μία γραμμή τη φορά και να τα εκτυπώσετε, όπως φαίνεται παρακάτω. Παρατηρήστε πώς έχουμε πρόσβαση μόνο σε μία γραμμή κάθε φορά και δεν διαβάζουμε ολόκληρο το περιεχόμενο του αρχείου.

with open('lib.txt','r') as f:
  for line in f:
    print(line, end='')

Σημείωση: Όταν χρησιμοποιείτε τη συνάρτηση print() της Python, το προεπιλεγμένο διαχωριστικό είναι ένας χαρακτήρας newline—’n’. Αλλά στο αρχικό αρχείο, δεν έχουμε αυτές τις νέες γραμμές. Ορίστε λοιπόν το όρισμα διαχωρισμού σε μια κενή συμβολοσειρά: end = ” για να εκτυπώσετε τα περιεχόμενα του αρχείου ως έχουν.

Πώς να διαβάσετε κομμάτια περιεχομένου από αρχείο στην Python

Στην Python, μπορείτε επίσης να επιλέξετε να διαβάσετε τα περιεχόμενα του αρχείου ως προς τα μικρά κομμάτια.

Διαβάστε τον παρακάτω κώδικα:

  • Εδώ, ορίζουμε το chunk_size σε 50. Αυτό σημαίνει ότι οι πρώτοι 50 χαρακτήρες του αρχείου θα διαβαστούν και τους εκτυπώνουμε επίσης.
  • Τώρα, καλέστε τη μέθοδο tell() στο αντικείμενο αρχείου f. Μπορείτε να δείτε ότι ο δείκτης αρχείου βρίσκεται τώρα στη θέση 51— η οποία είναι όπως αναμενόταν.
chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk)
  current = f.tell()
  print(f"Current position of file pointer: {current}")

# Output
Hello, there!
Here are a few helpful Python librar
Current position of file pointer: 51

Μπορείτε επίσης να χρησιμοποιήσετε αυτήν την τεχνική για να διαβάσετε ολόκληρο το αρχείο ως προς τα μικρά κομμάτια.

  Γιατί είμαι συνδεδεμένος στο Wi-Fi αλλά όχι στο Διαδίκτυο;

Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να το κάνετε αυτό.

chunk_size = 50
with open('lib.txt','r') as f:
  chunk = f.read(chunk_size)
  print(chunk,end='')

  while(len(chunk)>0):
    chunk = f.read(chunk_size)
    print(chunk,end='')

# Output
Hello, there!
Here are a few helpful Python libraries:
1) NumPy
2) pandas
3) matplotlib
4) seaborn
5) scikit-learn
6) BeautifulSoup
7) Scrapy
8) nltk
9) Bokeh
10) statsmodels

Εδώ, χρησιμοποιούμε έναν βρόχο while για να διαβάσουμε τα περιεχόμενα του αρχείου. Διαβάζουμε τα περιεχόμενα του αρχείου σε κομμάτι μεγέθους 50 μέχρι να φτάσουμε στο τέλος του αρχείου. ✅

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

Για να γράψετε σε ένα αρχείο κειμένου στην Python, θα πρέπει να το ανοίξετε στη λειτουργία εγγραφής—καθορίζοντας το ‘w’.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς να το κάνετε.

with open('new_file.txt','w') as f:
  f.write('Hello, Python!')

Θα δείτε ότι το ‘new_file.txt’ έχει δημιουργηθεί στον κατάλογο εργασίας σας.

Τώρα, εκτελέστε ξανά το παραπάνω κελί κώδικα.

Στο τερματικό σας εκτελέστε την ακόλουθη εντολή:

cat new_file.txt

# Output: Hello, Python!

Στην ιδανική περίπτωση, έχουμε γράψει στο αρχείο δύο φορές. Γεια σου, Python! έπρεπε να είχε εκτυπωθεί δύο φορές, ναι;

Αλλά θα δείτε ότι έχει εκτυπωθεί μόνο μία φορά. Λοιπόν, αυτό συμβαίνει επειδή όταν ανοίγετε ένα αρχείο σε λειτουργία εγγραφής (w), ουσιαστικά αντικαθιστάτε τα περιεχόμενα του αρχείου με νέο περιεχόμενο.

Εάν θέλετε να προσθέσετε στο τέλος του αρχείου χωρίς να αντικαταστήσετε το υπάρχον περιεχόμενο, θα πρέπει να ανοίξετε το αρχείο στη λειτουργία προσάρτησης. Και θα δείτε πώς να το κάνετε αυτό στην επόμενη ενότητα.

Πώς να προσαρτήσετε σε αρχείο στην Python

Εάν θέλετε να προσαρτήσετε περιεχόμενο σε ένα αρχείο—χωρίς αντικατάσταση, ανοίξτε το στη λειτουργία προσάρτησης.

Για να το κάνετε αυτό, χρησιμοποιήστε το ‘a’—a για προσάρτηση—και καθορίστε ρητά τη λειτουργία.

Στη συνέχεια, εκτελέστε το ακόλουθο κελί κώδικα δύο φορές.

with open('new_file.txt','a') as f:
  f.write('Hello, Python!')

Παρατηρήστε πώς το κείμενο εκτυπώνεται δύο φορές τώρα, όπως επισυνάψαμε στο αρχείο.

cat new_file.txt

# Output: Hello, Python!Hello, Python!

συμπέρασμα

Ας συνοψίσουμε γρήγορα αυτό που έχουμε διαβάσει σε αυτό το σεμινάριο.

  • Έχετε μάθει τις κοινές λειτουργίες εισόδου/εξόδου αρχείων, όπως η ανάγνωση, η εγγραφή και η προσάρτηση σε ένα αρχείο.
  • Επιπλέον, έχετε μάθει επίσης πώς να χρησιμοποιείτε τη μέθοδο seek() για να μετακινήσετε τον δείκτη του αρχείου σε συγκεκριμένη θέση και
  • πώς να χρησιμοποιήσετε τη μέθοδο tell() για να ανακτήσετε την τρέχουσα θέση του δείκτη του αρχείου.

Ελπίζω να βρήκατε αυτό το σεμινάριο χρήσιμο. Τώρα που μάθατε πώς να εργάζεστε με αρχεία κειμένου στην Python, μάθετε πώς να εργάζεστε με αρχεία JSON στην Python.

Σχετίζεται με:

Ελέγξτε το μήκος μιας λίστας στην Python σε 3 βήματα.