Python với câu lệnh mở: Hướng dẫn đơn giản – python mở dưới dạng f

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng câu lệnh with để đơn giản hóa cách bạn mở và xử lý các tệp trong chương trình Python của mình.

Bạn đang xem : python mở dưới dạng f

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng câu lệnh with để đơn giản hóa cách bạn mở và xử lý tệp trong các chương trình Python của mình.

Câu lệnh with tạo ra một trình quản lý ngữ cảnh giúp đơn giản hóa cách mở tệp và đóng trong các chương trình Python. Nếu không sử dụng câu lệnh with, nhà phát triển phải nhớ đóng các trình xử lý tệp. Điều này được Python tự động thực hiện khi sử dụng mẫu mở với… as.

Chúng ta sẽ bắt đầu bằng cách mở một tệp mà không có câu lệnh with và sau đó chúng ta sẽ thấy những lợi ích của việc này bằng cách sử dụng câu lệnh with.

Hãy bắt đầu !

Mở tệp bằng Python mà không cần sử dụng câu lệnh With

Tôi đã tạo một tệp có tên là output.txt có nội dung sau:

 < code class = "language-bash" lang = "bash"> $ cat output.txt
Dòng 1
Dòng 2
Dòng 3
Dòng 4
Dòng5  

Hãy xem định nghĩa của hàm mở từ tài liệu Python :

Trong hướng dẫn này, chúng tôi sẽ tập trung vào hai đối số đầu tiên của hàm mở: tệp chế độ .

Đây là cách chúng tôi có thể mở tệp của chúng tôi ở chế độ đọc bằng cách sử dụng chức năng mở .

Chế độ đọc là chế độ mặc định.

  & gt; & gt; & gt; f = open ('output.txt')
& gt; & gt; & gt; f.read ()
'Dòng1 \ nLine2 \ nLine3 \ nLine4 \ nLine5 \ n'
& gt; & gt; & gt; f.close ()
& gt; & gt; & gt; f. đóng cửa
Đúng  

Chúng tôi sử dụng hàm mở để tạo trình xử lý tệp (f) và sau đó chúng tôi sử dụng trình xử lý tệp để đọc nội dung của tệp bằng cách sử dụng read () function.

Sau khi đọc nội dung của tệp, chúng tôi sử dụng hàm close () để đóng trình xử lý.

Đang chạy f.closed chúng tôi nhận lại True dưới dạng xác nhận rằng trình xử lý tệp đã đóng.

Hãy xem đối tượng tệp trong ví dụ trước trông như thế nào:

  & gt; & gt; & gt; f = open ('output.txt')
& gt; & gt; & gt; in (f)
& lt; _io.TextIOWrapper name = 'output.txt' mode = 'r' encoding = 'UTF-8' & gt;
& gt; & gt; & gt; print (f .__ dict__)
{'mode': 'r'}  

Nó thuộc loại TextIOWrapper, mã hóa mặc định của nó là UTF-8 và nó có một thuộc tính gọi là mode .

Để tìm hiểu các phương pháp bạn có thể sử dụng trên đối tượng tệp này, hãy chạy lệnh sau trong trình bao Python:

  & gt; & gt; & gt; help (f)  

Lưu ý : Chế độ đọc là chế độ mặc định được Python sử dụng để mở tệp trừ khi bạn chuyển tham số thứ hai vào hàm mở (xem một số ví dụ bên dưới): ModeExample r (đọc – định dạng văn bản) f = open (tên tệp, ‘r’) rb (đọc – định dạng nhị phân) f = open (tên tệp, ‘rb ‘) w (ghi – định dạng văn bản, cắt bớt tệp) f = open (tên tệp,’ w ‘) wb (ghi – định dạng nhị phân, cắt bớt tệp) f = open (tên tệp, ‘wb’) r + (đọc và ghi – định dạng văn bản) f = open (tên tệp, ‘r +’) a (nối thêm – định dạng văn bản, nối vào cuối tệp) f = open (tên tệp, ‘a’)

Cách đọc tệp bằng cách mở … Như trong Python

Hãy xem điều gì sẽ xảy ra nếu chúng ta sử dụng câu lệnh with khi mở tệp bằng Python.

Cú pháp chúng ta sẽ sử dụng là:

   with open  (file, mode)  as  file_object   

Khi sử dụng câu lệnh with, một tệp sẽ tự động bị đóng khi không cần thiết nữa. Điều này được xác nhận bởi thực tế là trong mã sau f.closed trả về True.

  & gt; & gt; & gt; với open ('output.txt') là f:
... data = f.read ()
...
& gt; & gt; & gt; f. đóng cửa
Đúng  

Việc xóa tài nguyên trên hệ thống của bạn là cực kỳ quan trọng. Hãy tưởng tượng nếu bạn tạo một chương trình mở hàng trăm tệp và không đóng chúng. Nó có thể tiếp tục trong bao lâu trước khi sử dụng tất cả các tài nguyên hệ thống?

Vì vậy, để tóm tắt lại…

Nếu bạn không sử dụng từ khóa with, bạn phải nhớ gọi f.close () để giải phóng tài nguyên khi bạn không cần tệp của mình nữa. Không bắt buộc phải chạy f.close () khi sử dụng câu lệnh with.

Điều gì sẽ xảy ra nếu chúng ta cố đọc một tệp đã bị đóng?

  & gt; & gt; & gt; f. đóng cửa
ĐÚNG VẬY
& gt; & gt; & gt; f.read ()
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "& lt; stdin & gt;", dòng 1, trong & lt; mô-đun & gt;
ValueError: Hoạt động I / O trên tệp đã đóng.  

Python đặt ra ngoại lệ ValueError .

In tất cả các dòng trong tệp bằng cách sử dụng mở ... As

Hãy cùng tìm hiểu cách in tất cả các dòng trong một tệp sau khi mở tệp bằng câu lệnh with.

Chúng tôi sẽ sử dụng tệp output.txt được sử dụng trong ví dụ trước và lặp lại các dòng trong tệp một lần:

  with open ('output.txt', 'r +') như f:
    cho dòng trong f:
 print (line)  

Tôi đã chuyển r + làm tham số thứ hai để mở tệp để đọc và ghi .

< p> Như bạn có thể thấy, tôi đang sử dụng vòng lặp for để xem qua các dòng của tệp bằng cách sử dụng đối tượng tệp .

  $ python with_open_example.py
Dòng 1

Dòng 2

Dòng 3

Dòng 4

Dòng 5
  

Vì lý do nào đó, câu lệnh print đang thêm các ký tự dòng mới không có trong tệp gốc.

Để loại bỏ chúng, bạn có thể sử dụng cú pháp sau :

  print (line, end = '')  

< p> Mã của chúng tôi trở thành:

  with open ('output.txt', 'r +') như f:
    cho dòng trong f:
 print (line, end = '')

[đầu ra]
$ python with_open_example.py
Dòng 1
Dòng 2
Dòng 3
Dòng 4
Dòng5  

Hiện có vẻ ổn 🙂

Mở nhiều tệp trong một tệp Với Câu lệnh

Hãy tưởng tượng bạn phải viết một chương trình lấy một danh sách các chuỗi và ghi mỗi chuỗi vào một trong hai tệp .

Ví dụ: giả sử chúng ta có danh sách sau:

  items = ['dog', 'cat', 'apple', 'lê', 'lion', 'banana']  

Và chương trình của chúng tôi phải ghi động vật vào một tệp có tên là động vật .out và trái cây vào một tệp khác có tên là fruit.out.

Đây là cách bạn thực hiện việc này bằng cách sử dụng hai câu lệnh mở trong một câu lệnh duy nhất với biểu thức :

  items = ['dog', 'cat', 'apple', 'lê', 'lion', 'banana ']
 
với open ('animal.out', 'w') dưới dạng animal_f, open ('fruit.out', 'w') dưới dạng fruit_f:
cho mục trong các mục:
if item trong ['dog', 'cat', 'lion']:
Animal_f.write (item + '\ n')

nếu mục trong ['apple', 'lê', 'banana']:
Fruit_f.write (item + '\ n')  

Hãy chạy chương trình và xác nhận rằng hai tệp được tạo như chúng ta mong đợi:

  $ python with_open_example.py
$ cat fruit.out
táo
Lê
trái chuối
$ mèo động vật.out
chú chó
con mèo
Lion  

Để có thể sử dụng hai câu lệnh mở trong một với biểu thức Python 2.7, Python 3.1 hoặc mới hơn là bắt buộc.

Sử dụng lồng nhau với các câu lệnh mở trong Python

Cũng có thể lồng các câu lệnh mở thay vì sử dụng hai câu lệnh mở trên cùng một dòng.

Đây là cách chúng tôi có thể cập nhật chương trình trước của mình bằng cách sử dụng hai câu lệnh lồng nhau :

  items = ['dog', 'mèo', 'táo', 'lê', 'sư tử', 'chuối']
 
với open ('animal.out', 'w') dưới dạng animal_f:
với open ('fruit.out', 'w') dưới dạng fruit_f:
cho mục trong các mục:
if item trong ['dog', 'cat', 'lion']:
Animal_f.write (item + '\ n')

nếu mục trong ['apple', 'lê', 'banana']:
fruit_f.write (item + '\ n')  

Dưới đây, bạn có thể thấy rằng chương trình vẫn thực hiện những gì nó phải làm 🙂

  $ python with_open_example.py
$ cat fruit.out
táo
Lê
trái chuối
$ mèo động vật.out
chú chó
con mèo
Lion  

Sử dụng Python Mở để Làm việc với Tệp Nhị phân

Chúng tôi thường làm việc với tệp văn bản, nhưng còn tệp nhị phân thì sao?

Ví dụ: bạn sẽ mở tệp PNG bằng cách sử dụng những gì chúng tôi bạn đã tìm hiểu về câu lệnh with chưa?

Trong thư mục hiện tại, tôi đã tải xuống một hình ảnh có tên là python.png:

  $ ls -ltr
tổng số 208
-rw-r - r - @ 1 myuser mygroup 102916 22 Feb 20:13 python.png  

Chúng ta đã biết rằng kích thước của nó là 102916 byte từ đầu ra của lệnh ls ở trên .

Hãy mở nó và xác nhận kích thước của nó bằng Python.

Làm cách nào để lấy số byte trong tệp bằng Python?

  với open ('python.png', 'rb') là png_file:
    bytes_count = 0

 trong khi png_file.read (1):
 bytes_count + = 1

print ("Kích thước của tệp là: {}". format (bytes_count))  

Đây là những gì chúng tôi đã thực hiện trong mã của mình:

  1. Sử dụng khi mở… như để mở tệp PNG ở chế độ nhị phân .
  2. Đọc một byte tại một thời điểm bằng cách sử dụng vòng lặp while cho đến khi chúng tôi đọc hết của tệp.
  3. Tăng giá trị của số nguyên byte_count mỗi khi chúng ta đọc một byte.

Đầu ra của chương trình là:

  $ python read_binary_file.py
Kích thước của tệp là: 102916  

Kích thước tệp được chương trình của chúng tôi tính toán khớp với kích thước được hiển thị bởi lệnh ls. Tuyệt vời!

Sử dụng Thử cuối cùng là Tương đương với Với Mở ... Như

Để bạn hiểu đầy đủ về câu lệnh with, tôi cũng muốn chỉ cho bạn một cách thay thế để viết một logic hoạt động giống như open… as.

Chúng tôi sẽ sử dụng câu lệnh try… last để đảm bảo đối tượng tệp luôn được đóng sau khi thực hiện khối mã thử. Tôi muốn viết nội dung tương tự như sau:

  & gt; & gt; & gt; với open ('output.txt') là f:
... data = f.read ()  

Đây là mã:

  & gt; & gt; & gt; f = open ('output.txt')
& gt; & gt; & gt; thử:
... data = f.read ()
... cuối cùng:
... f.close ()
...
& gt; & gt; & gt; f. đóng cửa
Đúng  

Bạn có thể thấy lợi ích của việc sử dụng with open thay thế không?

Nó chắc chắn làm cho mã của chúng ta ngắn gọn hơn. Hãy tưởng tượng nếu chúng ta phải sử dụng câu lệnh try… last cho mỗi tệp chúng ta mở!

Kết luận

Trong hướng dẫn đơn giản này, chúng ta đã biết cách sử dụng with open trong Python để đơn giản hóa cách chúng ta làm việc với tệp.

Thực hành cú pháp của nó một vài lần và bạn sẽ nhớ nó mà không gặp vấn đề gì bất cứ khi nào bạn cần sử dụng nó trong tương lai.

Tôi cũng đã viết một bài hướng dẫn về thực thi các lệnh shell bằng Python và trong một trong các phần, tôi hướng dẫn cách sử dụng câu lệnh with để ghi đầu ra của một lệnh vào một tệp.

Có xem qua nó để củng cố kỹ năng cốt lõi Python của bạn khi làm việc với Hệ điều hành.

Tôi là Trưởng nhóm kỹ thuật, Kỹ sư phần mềm và Huấn luyện viên lập trình . Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển cấp cao!


Xem thêm những thông tin liên quan đến chủ đề python mở dưới dạng f

Bài 40: Thao tác với tệp, đọc, ghi data vào tệp python - File io python

  • Tác giả: Gà Lại Lập Trình
  • Ngày đăng: 2021-12-22
  • Đánh giá: 4 ⭐ ( 1098 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: ✅ Nếu thấy video hay và bổ ích hãy like và chia sẻ để mình biết
    Các bạn đang quan tâm nhiều đến chủ đề nào và phát triển tiếp cho nội dung đăng sau này
    ✅ Đăng ký kênh để không bỏ lỡ video: http://dangky.tuhoc.cc
    Playlist Video :
    ✅C cơ bản cho người mới: http://csharp.tuhoc.cc/
    ✅ Python căn bản cho người mới: http://python.tuhoc.cc/
    ✅ pygame lập trình game cho người mới : http://pygame.tuhoc.cc/
    ✅ opencv python : http://opencv.tuhoc.cc/
    ✅ clip động lực để học tập : http://dongluc.tuhoc.cc/
    Nhóm thảo luận:
    ✅ Facebook : http://fb.tuhoc.cc/
    ✅ Toàn bộ tài liệu silde bài giảng post tại disord : http://dc.tuhoc.cc/

    python laptrinhpython pythoncoban galailaptrinh pythonvietnam python_cho_nguoi_moi opencv_python

Làm việc với File trong Python

  • Tác giả: quantrimang.com
  • Đánh giá: 5 ⭐ ( 7212 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này, Quantrimang sẽ cùng bạn tìm hiểu về các hoạt động của file trong Python. Cụ thể hơn là về cách mở file, đọc file, ghi tới file, đóng file cũng như các phương thức làm việc với tập tin mà bạn nên biết. Hãy cùng theo dõi.

Định dạng chuỗi trong python bằng chuỗi f

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 5 ⭐ ( 7918 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách định dạng chuỗi trong python bằng chuỗi f. Đây là phương thức định dạng chuỗi mới nhất được tích hợp từ Python 3.6, với cách viết trực tiếp và đơn giản hơn là những điểm cộng của p

Nhập xuất dữ liệu trong Python

  • Tác giả: phannhatchanh.com
  • Đánh giá: 4 ⭐ ( 2673 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Một chương trình máy tính thường cần giao tiếp với người dùng bên ngoài bằng cách lấy dữ liệu đầu vào (dữ liệu có thể là nhập từ bàn phím, …

Python cơ bản

  • Tác giả: hiepsiit.net
  • Đánh giá: 5 ⭐ ( 1110 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

File I/O trong Python

  • Tác giả: topdev.vn
  • Đánh giá: 3 ⭐ ( 9567 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chắc bạn cũng đã quen thuộc với khái niệm File I/O khi đã học qua C hoặc C++. Và Python cũng hỗ trợ việc đọc và ghi dữ liệu tới các file.

Đọc ghi file text trong Python

  • Tác giả: yeulaptrinh.vn
  • Đánh giá: 4 ⭐ ( 5586 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Python hỗ trợ rất nhiều hàm cho việc xử lý files. Điều này giúp chúng ta dễ dàng trong việc tạo, cập nhật, đọc và xóa file.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Bắt đầu với HTML + CSS - làm thế nào để bắt đầu tập tin css