Python 3 - Tệp I / O

Chương này trình bày tất cả các hàm I / O cơ bản có sẵn trong Python 3. Để biết thêm các hàm, vui lòng tham khảo tài liệu Python chuẩn.

In ra màn hình

Cách đơn giản nhất để tạo ra kết quả là sử dụng câu lệnh print trong đó bạn có thể chuyển không hoặc nhiều biểu thức được phân tách bằng dấu phẩy. Hàm này chuyển đổi các biểu thức bạn chuyển thành một chuỗi và ghi kết quả vào đầu ra chuẩn như sau:

#!/usr/bin/python3

print ("Python is really a great language,", "isn't it?")

Điều này tạo ra kết quả sau trên màn hình tiêu chuẩn của bạn:

Python is really a great language, isn't it?

Đọc đầu vào bàn phím

Python 2 có hai chức năng tích hợp để đọc dữ liệu từ đầu vào tiêu chuẩn, theo mặc định là từ bàn phím. Các chức năng này làinput()raw_input()

Trong Python 3, hàm raw_input () không được dùng nữa. Hơn nữa, các hàm input () đọc dữ liệu từ bàn phím dưới dạng chuỗi, bất kể nó có được đặt trong dấu ngoặc kép ('' hoặc "") hay không.

Chức năng đầu vào

Các input([prompt]) hàm tương đương với raw_input, ngoại trừ việc nó giả định rằng đầu vào là một biểu thức Python hợp lệ và trả về kết quả đã đánh giá cho bạn.

#!/usr/bin/python3

>>> x = input("something:")
something:10

>>> x
'10'

>>> x = input("something:")
something:'10' #entered data treated as string with or without ''

>>> x
"'10'"

Mở và đóng tệp

Cho đến nay, bạn đã đọc và ghi với đầu vào và đầu ra tiêu chuẩn. Bây giờ, chúng ta sẽ xem cách sử dụng các tệp dữ liệu thực tế.

Python cung cấp các hàm và phương thức cơ bản cần thiết để thao tác các tệp theo mặc định. Bạn có thể thực hiện hầu hết các thao tác trên tệp bằng cách sử dụngfile vật.

Chức năng mở

Trước khi có thể đọc hoặc ghi một tệp, bạn phải mở tệp đó bằng hàm open () có sẵn của Python. Hàm này tạo ra mộtfile đối tượng, sẽ được sử dụng để gọi các phương thức hỗ trợ khác được liên kết với nó.

Cú pháp

file object = open(file_name [, access_mode][, buffering])

Đây là thông số chi tiết -

  • file_name - Đối số tên tệp là một giá trị chuỗi có chứa tên của tệp mà bạn muốn truy cập.

  • access_mode- Access_mode xác định chế độ mà tệp phải được mở, tức là, đọc, ghi, nối thêm, v.v. Danh sách đầy đủ các giá trị có thể được đưa ra dưới đây trong bảng. Đây là một tham số tùy chọn và chế độ truy cập tệp mặc định là đọc (r).

  • buffering- Nếu giá trị bộ đệm được đặt thành 0, không có bộ đệm nào diễn ra. Nếu giá trị bộ đệm là 1, bộ đệm dòng được thực hiện trong khi truy cập tệp. Nếu bạn chỉ định giá trị đệm là một số nguyên lớn hơn 1, thì hành động đệm được thực hiện với kích thước bộ đệm được chỉ định. Nếu âm, kích thước bộ đệm là mặc định của hệ thống (hành vi mặc định).

Đây là danh sách các chế độ mở tệp khác nhau -

Sr.No. Chế độ & Mô tả
1

r

Mở tệp chỉ để đọc. Con trỏ tệp được đặt ở đầu tệp. Đây là chế độ mặc định.

2

rb

Mở tệp chỉ để đọc ở định dạng nhị phân. Con trỏ tệp được đặt ở đầu tệp. Đây là chế độ mặc định.

3

r+

Mở tệp để đọc và ghi. Con trỏ tệp được đặt ở đầu tệp.

4

rb+

Mở tệp để đọc và ghi ở định dạng nhị phân. Con trỏ tệp được đặt ở đầu tệp.

5

w

Mở tệp chỉ để ghi. Ghi đè tệp nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để ghi.

6

wb

Mở tệp chỉ để ghi ở định dạng nhị phân. Ghi đè tệp nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để ghi.

7

w+

Mở tệp để ghi và đọc. Ghi đè tệp hiện có nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để đọc và ghi.

số 8

wb+

Mở tệp để ghi và đọc ở định dạng nhị phân. Ghi đè tệp hiện có nếu tệp tồn tại. Nếu tệp không tồn tại, hãy tạo một tệp mới để đọc và ghi.

9

a

Mở một tệp để bổ sung. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tức là, tệp đang ở chế độ nối thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để ghi.

10

ab

Mở tệp để thêm vào ở định dạng nhị phân. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tức là, tệp đang ở chế độ nối thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để ghi.

11

a+

Mở một tệp để bổ sung và đọc. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tệp sẽ mở ở chế độ nối thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để đọc và ghi.

12

ab+

Mở tệp để bổ sung và đọc ở định dạng nhị phân. Con trỏ tệp ở cuối tệp nếu tệp tồn tại. Tệp sẽ mở ở chế độ nối thêm. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới để đọc và ghi.

Thuộc tính đối tượng tệp

Khi tệp được mở và bạn có một đối tượng tệp , bạn có thể nhận được nhiều thông tin khác nhau liên quan đến tệp đó.

Đây là danh sách tất cả các thuộc tính liên quan đến một đối tượng tệp -

Sr.No. Thuộc tính & Mô tả
1

file.closed

Trả về true nếu tệp được đóng, nếu không trả về false.

2

file.mode

Trả về chế độ truy cập mà tệp đã được mở.

3

file.name

Trả về tên của tệp.

Note - thuộc tính không gian mềm không được hỗ trợ trong Python 3.x

Thí dụ

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()

Điều này tạo ra kết quả sau:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb

Phương thức close ()

Phương thức close () của một đối tượng tệp sẽ xóa mọi thông tin không được viết ra và đóng đối tượng tệp, sau đó không thể ghi được nữa.

Python tự động đóng tệp khi đối tượng tham chiếu của tệp được gán lại cho một tệp khác. Bạn nên sử dụng phương thức close () để đóng tệp.

Cú pháp

fileObject.close();

Thí dụ

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)

# Close opened file
fo.close()

Điều này tạo ra kết quả sau:

Name of the file:  foo.txt

Đọc và ghi tệp

Đối tượng tệp cung cấp một tập hợp các phương thức truy cập để giúp cuộc sống của chúng ta dễ dàng hơn. Chúng tôi sẽ xem cách sử dụngread()write() phương pháp đọc và ghi tệp.

Phương thức write ()

Các write()phương thức ghi bất kỳ chuỗi nào vào một tệp đang mở. Điều quan trọng cần lưu ý là các chuỗi Python có thể có dữ liệu nhị phân chứ không chỉ có văn bản.

Phương thức write () không thêm ký tự dòng mới ('\ n') vào cuối chuỗi -

Cú pháp

fileObject.write(string);

Ở đây, tham số được truyền là nội dung được ghi vào tệp đã mở.

Thí dụ

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

Phương thức trên sẽ tạo tệp foo.txt và sẽ ghi nội dung đã cho vào tệp đó và cuối cùng nó sẽ đóng tệp đó. Nếu bạn mở tệp này, nó sẽ có nội dung sau:

Python is a great language.
Yeah its great!!

Phương thức read ()

Các read()phương thức đọc một chuỗi từ một tệp đang mở. Điều quan trọng cần lưu ý là các chuỗi Python có thể có dữ liệu nhị phân. ngoài dữ liệu văn bản.

Cú pháp

fileObject.read([count]);

Ở đây, tham số được truyền là số byte được đọc từ tệp đã mở. Phương thức này bắt đầu đọc từ đầu tệp và nếu số đếm bị thiếu, thì nó sẽ cố gắng đọc càng nhiều càng tốt, có thể cho đến cuối tệp.

Thí dụ

Hãy để chúng tôi lấy một tệp foo.txt , mà chúng tôi đã tạo ở trên.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Close opened file
fo.close()

Điều này tạo ra kết quả sau:

Read String is :  Python is

Vị trí tệp

Phương thức tell () cho bạn biết vị trí hiện tại trong tệp; nói cách khác, lần đọc hoặc ghi tiếp theo sẽ xảy ra với số byte đó từ đầu tệp.

Phương thức seek (offset [, from]) thay đổi vị trí tệp hiện tại. Cácoffsetđối số cho biết số byte được di chuyển. Cácfrom đối số chỉ định vị trí tham chiếu từ nơi các byte sẽ được di chuyển.

Nếu từ được đặt thành 0, phần đầu của tệp được sử dụng làm vị trí tham chiếu. Nếu nó được đặt thành 1, vị trí hiện tại được sử dụng làm vị trí tham chiếu. Nếu nó được đặt thành 2 thì phần cuối của tệp sẽ được lấy làm vị trí tham chiếu.

Thí dụ

Hãy để chúng tôi lấy một tệp foo.txt , mà chúng tôi đã tạo ở trên.

#!/usr/bin/python3

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)

# Check current position
position = fo.tell()
print ("Current file position : ", position)

# Reposition pointer at the beginning once again
position = fo.seek(0, 0)
str = fo.read(10)
print ("Again read String is : ", str)

# Close opened file
fo.close()

Điều này tạo ra kết quả sau:

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

Đổi tên và xóa tệp

Python os mô-đun cung cấp các phương pháp giúp bạn thực hiện các thao tác xử lý tệp, chẳng hạn như đổi tên và xóa tệp.

Để sử dụng mô-đun này, trước tiên bạn cần nhập nó và sau đó bạn có thể gọi bất kỳ chức năng liên quan nào.

Phương thức rename ()

Các rename() phương thức nhận hai đối số, tên tệp hiện tại và tên tệp mới.

Cú pháp

os.rename(current_file_name, new_file_name)

Thí dụ

Sau đây là một ví dụ để đổi tên tệp hiện có test1.txt -

#!/usr/bin/python3
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

Phương thức remove ()

Bạn có thể dùng remove() phương pháp xóa tệp bằng cách cung cấp tên của tệp sẽ bị xóa làm đối số.

Cú pháp

os.remove(file_name)

Thí dụ

Sau đây là một ví dụ để xóa một tệp test2.txt hiện có -

#!/usr/bin/python3
import os

# Delete file test2.txt
os.remove("text2.txt")

Thư mục trong Python

Tất cả các tệp được chứa trong các thư mục khác nhau và Python cũng không gặp vấn đề gì khi xử lý chúng. Cácos mô-đun có một số phương pháp giúp bạn tạo, xóa và thay đổi thư mục.

Phương thức mkdir ()

Bạn có thể dùng mkdir() phương pháp của osmô-đun để tạo các thư mục trong thư mục hiện tại. Bạn cần cung cấp đối số cho phương thức này, đối số này chứa tên của thư mục sẽ được tạo.

Cú pháp

os.mkdir("newdir")

Thí dụ

Sau đây là một ví dụ để tạo kiểm tra thư mục trong thư mục hiện tại -

#!/usr/bin/python3
import os

# Create a directory "test"
os.mkdir("test")

Phương thức chdir ()

Bạn có thể sử dụng phương thức chdir () để thay đổi thư mục hiện tại. Phương thức chdir () nhận một đối số, là tên của thư mục mà bạn muốn tạo thư mục hiện tại.

Cú pháp

os.chdir("newdir")

Thí dụ

Sau đây là một ví dụ để đi vào thư mục "/ home / newdir" -

#!/usr/bin/python3
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

Phương thức getcwd ()

Các getcwd() phương thức hiển thị thư mục làm việc hiện tại.

Cú pháp

os.getcwd()

Thí dụ

Sau đây là một ví dụ để cung cấp cho thư mục hiện tại:

#!/usr/bin/python3
import os

# This would give location of the current directory
os.getcwd()

Phương thức rmdir ()

Các rmdir() phương thức xóa thư mục, được truyền như một đối số trong phương thức.

Trước khi xóa một thư mục, tất cả nội dung trong đó phải được xóa.

Cú pháp

os.rmdir('dirname')

Thí dụ

Sau đây là một ví dụ để loại bỏ thư mục "/ tmp / test". Nó được yêu cầu cung cấp tên đầy đủ đủ điều kiện của thư mục, nếu không nó sẽ tìm kiếm thư mục đó trong thư mục hiện tại.

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

Các phương pháp liên quan đến tệp và thư mục

Có ba nguồn quan trọng, cung cấp một loạt các phương pháp tiện ích để xử lý và thao tác các tệp & thư mục trên hệ điều hành Windows và Unix. Chúng như sau:

  • Phương thức đối tượng tệp

    Các file đối tượng cung cấp các chức năng để thao tác với tệp.

  • Phương thức đối tượng hệ điều hành

    Điều này cung cấp các phương pháp xử lý tệp cũng như thư mục.