Python có thể ghi vào bộ nhớ không?

Đọc và ghi tệp là thao tác phổ biến khi làm việc với bất kỳ ngôn ngữ lập trình nào. Bạn có thể lập trình mã của mình để đọc dữ liệu hoặc hướng dẫn từ một tệp và sau đó cũng ghi dữ liệu. Điều này làm tăng hiệu quả và giảm nỗ lực thủ công

Python có một phương pháp được xác định rõ để mở, đọc và ghi tệp. Một số ứng dụng để thao tác tệp trong Python bao gồm. đọc dữ liệu để đào tạo và kiểm tra thuật toán, đọc tệp để tạo nghệ thuật tổng quát, báo cáo và đọc tệp cấu hình.  

Trong hướng dẫn này, bạn sẽ học

  1. Cách tải tệp vào bộ nhớ chính và tạo bộ xử lý tệp
  2. Cách sử dụng bộ xử lý tệp để mở tệp để đọc và ghi
  3. Xử lý ngoại lệ khi làm việc với tệp

điều kiện tiên quyết

  • Đảm bảo bạn đã cài đặt phiên bản Python mới nhất
  • Quen thuộc với bất kỳ trình soạn thảo văn bản nào được Python hỗ trợ mà bạn chọn
  • Một số quen thuộc với cú pháp Python cơ bản

Để có quyền truy cập nhanh vào Python IDE, hãy xem Replit. Bạn cũng có thể sao chép repo này và chạy nó trên Replit

Độ bền và cách tải tệp vào bộ nhớ chính

Tệp nằm trong bộ nhớ phụ của máy tính. Bộ nhớ thứ cấp liên tục, có nghĩa là dữ liệu không bị xóa khi tắt máy tính. Sau khi bạn thực hiện các thay đổi đối với một tệp và lưu tệp đó, các thay đổi đó sẽ được ghi và lưu vĩnh viễn trong bộ nhớ phụ

Để làm việc với các tệp, trước tiên chúng ta cần tải chúng vào bộ nhớ chính. Bộ nhớ chính là bộ nhớ cache tạm thời chứa dữ liệu được yêu cầu trong một khoảng thời gian ngắn. Dữ liệu bị mất khi tắt nguồn máy tính

Các tệp được tải từ bộ nhớ phụ vào bộ nhớ chính và sau đó được xử lý bởi CPU. Sau khi xử lý xong, dữ liệu được ghi trở lại bộ nhớ phụ

Python tương tác với các tệp được tải trong bộ nhớ chính thông qua "trình xử lý tệp". Hãy xem chi tiết các trình xử lý tệp

Trình xử lý tệp hoạt động như thế nào

Khi chúng ta muốn đọc hoặc ghi một tệp, trước tiên chúng ta phải mở tệp đó. Việc mở một tệp báo hiệu cho hệ điều hành tìm kiếm tệp theo tên của nó và đảm bảo rằng nó tồn tại

Hệ điều hành trả về một trình xử lý tệp nếu mở thành công. Sau đó, chúng tôi có thể tương tác với tệp của mình thông qua trình xử lý tệp

Trình xử lý tệp không chứa dữ liệu, nó chỉ cung cấp giao diện để xử lý các hoạt động của tệp

Trình xử lý tệp cung cấp cho chương trình của bạn quyền truy cập vào dữ liệu trong bộ nhớ phụ

Cách mở tệp

Trong ví dụ này, chúng tôi sẽ mở tệp

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
2. Lưu ý rằng tệp này phải được lưu trữ trong cùng thư mục với chương trình Python của bạn. Bạn có thể tải xuống tệp
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
2 từ liên kết GitHub này

Hãy xem qua tệp vì chúng tôi sẽ làm việc với nội dung của nó trong các ví dụ sắp tới của chúng tôi

Ví dụ

fhand = open['daffodils.txt']
print[fhand]

Trong ví dụ trên, HĐH sẽ trả về xử lý tệp trong biến

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
4 nếu mở thành công. Theo mặc định, bạn chỉ có thể đọc tệp

đầu ra

Đầu ra của một xử lý tập tin

Ở đầu ra, chúng tôi đã nhận được một xử lý tệp trong đó

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
5 là tên tệp và
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
6 là quyền mà trong trường hợp của chúng tôi là
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
7 [viết tắt của
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
8].
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
9 là cơ chế mã hóa cho bộ ký tự Unicode. Bạn có thể tìm hiểu thêm thông tin chi tiết về UTF-8 tại đây

Ngoại lệ

Trong trường hợp tệp không tồn tại, chúng tôi có một ngoại lệ như thế này

Ngoại lệ khi không tìm thấy tệp

Cách in tệp

Bây giờ chúng tôi có phần xử lý tệp có nghĩa là chúng tôi có thể truy cập tệp. Hãy in tập tin và xem nội dung của nó

Ví dụ

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 

đầu ra

In nội dung của một tập tin

Chúng tôi có thể truy cập và in tệp thành công. Tuy nhiên, bạn có nhận thấy rằng chúng ta đang có thêm các dòng trống giữa mỗi dòng không? . Hãy xem trong phần tiếp theo

Cách xử lý khoảng cách dòng thừa

Ký tự dòng mới được biểu thị bằng Python bằng

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
00. Ký tự này thêm một dòng mới khi được đặt ở bất kỳ đâu trong chuỗi

Có một ký tự dòng mới ở cuối mỗi dòng in ra dòng tiếp theo. Chúng ta có thể hình dung nó bằng phương pháp

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
01

Theo Python, phương thức

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
02 trả về một chuỗi chứa biểu diễn có thể in được của một đối tượng. Điều này có nghĩa là chúng ta có thể thấy bất kỳ ký tự đặc biệt nào như
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
03 xuất hiện trong một chuỗi.  

Hãy chạy một ví dụ bên dưới và xem đầu ra

Biểu diễn các chuỗi bằng cách sử dụng
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
02

Ví dụ

Quay lại tệp của chúng tôi, chúng tôi có thể sử dụng

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
02 để kiểm tra các ký tự đặc biệt

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
0

đầu ra

Ở đây chúng ta có thể thấy những gì đang diễn ra đằng sau hậu trường

Hơn nữa, phương thức in thêm một dòng mới theo mặc định. Điều này có nghĩa là bằng cách sử dụng bản in, chúng tôi sẽ nhận được một dòng mới khác trong đầu ra. Chúng tôi có thể xử lý dòng bổ sung này bằng hai cách tiếp cận

Cách tiếp cận số 1. Thay đổi giá trị cuối mặc định của bản in

Đoạn mã dưới đây hiển thị các đối số cho hàm

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
06. Chúng ta có thể thấy rằng theo mặc định, giá trị của
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
07 là
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
00. Điều này có nghĩa là mọi câu lệnh in sẽ kết thúc bằng
# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
00

Nguồn. con trăn

Chúng tôi có thể thay đổi giá trị mặc định

fhand = open['daffodils.txt']
print[fhand]
10 thành khoảng trống để chúng tôi không nhận được một dòng mới ở cuối mỗi dòng. Cùng xem ví dụ bên dưới để hiểu rõ hơn

fhand = open['daffodils.txt']
print[fhand]
1

đầu ra

In trên cùng một dòng và khác dòng bằng cách sử dụng
fhand = open['daffodils.txt']
print[fhand]
11.  

Quay lại tệp chính của chúng tôi, hãy sửa đổi mã một chút để có được đầu ra mà không cần thêm dòng trống

fhand = open['daffodils.txt']
print[fhand]
4

đầu ra

Và ở đây chúng tôi có đầu ra mong muốn của chúng tôi

In không có dòng thừa bằng cách sử dụng
fhand = open['daffodils.txt']
print[fhand]
11

Cách tiếp cận #2. Sử dụng phương thức rstrip[]

Chúng ta có thể xóa một số ký tự xung quanh một chuỗi bằng phương thức

fhand = open['daffodils.txt']
print[fhand]
13

Đến bây giờ chúng ta biết rằng theo mặc định, mỗi dòng trong một tệp có ____214 ở cuối. Vì chúng tôi chỉ quan tâm đến ký tự bên phải, chúng tôi sẽ sử dụng

fhand = open['daffodils.txt']
print[fhand]
15 viết tắt của dải bên phải. Chúng ta sẽ thảo luận về một ví dụ về
fhand = open['daffodils.txt']
print[fhand]
15 tiếp theo

Bạn có thể tìm hiểu thêm về phương pháp

fhand = open['daffodils.txt']
print[fhand]
13 trong bài đăng trên blog này

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
1

đầu ra

In không có dòng thừa bằng cách sử dụng rstrip____218

Cách để người dùng chọn tệp

Thay vì mã hóa cứng tên tệp, chúng tôi có thể làm cho mã động bằng cách cho phép người dùng chọn tệp

Hãy yêu cầu người dùng nhập tên tệp. Sau đó, chúng tôi sẽ tính toán số lượng dòng trong tệp

Ví dụ

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
3Yêu cầu người dùng nhập tên tệp

đầu ra

Yêu cầu người dùng nhập tên tệp

Cách viết một tệp bằng Python

Theo mặc định, trình xử lý tệp sẽ mở tệp ở chế độ đọc. Chúng tôi có thể ghi vào một tệp nếu chúng tôi mở tệp bằng bất kỳ chế độ nào sau đây

  • fhand = open['daffodils.txt']
    print[fhand]
    19- [Write] ghi vào tệp hiện có nhưng xóa nội dung hiện có
  • fhand = open['daffodils.txt']
    print[fhand]
    40- [Append] thêm vào một tệp hiện có
  • fhand = open['daffodils.txt']
    print[fhand]
    41 - [Tạo] tạo tệp và trả về lỗi nếu tệp tồn tại

Làm thế nào để ghi vào một tập tin

Lưu ý rằng, nếu chúng tôi cố gắng mở một tệp đã tồn tại với cờ

fhand = open['daffodils.txt']
print[fhand]
19, nội dung sẽ bị ghi đè

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
8

Cách thêm vào một tệp

Cờ

fhand = open['daffodils.txt']
print[fhand]
40 gắn vào nội dung hiện có và giữ nguyên nội dung hiện có

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
0

Làm thế nào để tạo một tập tin và ghi vào nó

Chế độ

fhand = open['daffodils.txt']
print[fhand]
41 tạo một tệp và thêm nội dung vào đó

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
2

Nếu tệp tồn tại, chúng tôi sẽ nhận được một ngoại lệ như thế này

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
0

Xử lý ngoại lệ

Có thể tệp chúng tôi yêu cầu không tồn tại. Điều này làm nổ tung chương trình do ngoại lệ

Để làm cho chương trình thân thiện hơn với người dùng, chúng tôi có thể xử lý ngoại lệ này trong khối

fhand = open['daffodils.txt']
print[fhand]
45

Phần rủi ro của chương trình dự kiến ​​sẽ nổ tung được viết trong một khối

fhand = open['daffodils.txt']
print[fhand]
46. Trong trường hợp mã thực thi mà không có ngoại lệ, khối
fhand = open['daffodils.txt']
print[fhand]
47 sẽ bị bỏ qua và chương trình tiếp tục chạy. Trong trường hợp tìm thấy ngoại lệ, khối
fhand = open['daffodils.txt']
print[fhand]
47 sẽ chạy và đóng chương trình một cách duyên dáng bằng lệnh
fhand = open['daffodils.txt']
print[fhand]
49

# Get the file handler
fhand = open['daffodils.txt']

# Loop through each line via file handler
for line in fhand:
  print[line] 
1

đầu ra

Xử lý ngoại lệ bằng cách sử dụng khối thử ngoại trừ

kết thúc

Biết cách làm việc với tệp là một khái niệm thiết yếu trong lập trình. Trong hướng dẫn này, bạn đã học cách mở tệp để đọc và ghi bằng Python bằng trình xử lý tệp

Để tham khảo, tôi đã bao gồm tất cả các đoạn mã và tệp mẫu trong repo GitHub này

Tôi hy vọng bạn thấy hướng dẫn này hữu ích

Điều yêu thích của bạn mà bạn đã học được từ hướng dẫn này là gì?

Bạn cũng có thể đọc các bài viết khác của tôi ở đây

tín dụng biểu ngữ

  • Php vector tạo bởi svstudioart - www. freepik. com
  • Vector chủ đề trang web được tạo bởi freepik - www. freepik. com

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

Zaira Hira

Tôi là Nhà tư vấn và nhà văn DevOps tại FreeCodeCamp. Tôi mong muốn cung cấp nội dung dễ dàng và chính xác cho Techies

Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Python có lưu trữ dữ liệu trong bộ nhớ không?

Python sử dụng thuật toán thu gom rác [gọi là Garbage Collector] để giữ cho bộ nhớ Heap sạch sẽ và loại bỏ các đối tượng không cần thiết nữa. Bạn không cần phải loay hoay với Heap, nhưng tốt hơn hết là bạn nên hiểu cách Python quản lý Heap vì hầu hết dữ liệu của bạn được lưu trữ trong phần này của bộ nhớ.

Python có quản lý bộ nhớ tốt không?

Python tối ưu hóa việc sử dụng bộ nhớ bằng cách phân bổ cùng một tham chiếu đối tượng cho một biến mới nếu đối tượng đã tồn tại với cùng một giá trị. Đó là lý do tại sao python được gọi là bộ nhớ hiệu quả hơn .

Python có thể đọc bộ nhớ không?

Mmap của Python cung cấp đầu vào và đầu ra tệp ánh xạ bộ nhớ [I/O] . Nó cho phép bạn tận dụng chức năng của hệ điều hành cấp thấp hơn để đọc các tệp như thể chúng là một chuỗi hoặc mảng lớn. Điều này có thể mang lại những cải tiến hiệu suất đáng kể trong mã yêu cầu nhiều tệp I/O.

Làm cách nào để lưu trữ bộ nhớ trong Python?

Python sử dụng một phần bộ nhớ để sử dụng nội bộ và bộ nhớ phi đối tượng. Một phần khác của bộ nhớ được sử dụng cho đối tượng Python như int, dict, list, v.v. CPython chứa bộ cấp phát đối tượng cấp phát bộ nhớ trong vùng đối tượng. Bộ cấp phát đối tượng nhận được một cuộc gọi mỗi khi đối tượng mới cần không gian

Chủ Đề