Python - Tệp I / O
Chương này bao gồm tất cả các chức năng I / O cơ bản có sẵn trong Python. Để biết thêm các chức năng, 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/python
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 cung cấp hai hàm tích hợp để đọc một dòng văn bản 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à -
- raw_input
- input
Các raw_input Chức năng
Hàm raw_input ([prompt]) đọc một dòng từ đầu vào chuẩn và trả về dưới dạng một chuỗi (loại bỏ dòng mới ở cuối).
#!/usr/bin/python
str = raw_input("Enter your input: ")
print "Received input is : ", str
Thao tác này sẽ nhắc bạn nhập bất kỳ chuỗi nào và nó sẽ hiển thị cùng một chuỗi trên màn hình. Khi tôi nhập "Hello Python!", Đầu ra của nó như thế này -
Enter your input: Hello Python
Received input is : Hello Python
Các đầu vào Chức năng
Hàm input ([prompt]) tương đương với raw_input, ngoại trừ việc nó giả sử đầ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/python
str = input("Enter your input: ")
print "Received input is : ", str
Điều này sẽ tạo ra kết quả sau so với đầu vào đã nhập:
Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is : [10, 20, 30, 40]
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.
Các mở Chức năng
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à 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. |
Các tập tin thuộc tính đối tượng
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 đố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. |
4 | file.softspace Trả về false nếu không gian được yêu cầu rõ ràng với print, nếu không thì trả về true. |
Thí dụ
#!/usr/bin/python
# 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
print "Softspace flag : ", fo.softspace
Điều này tạo ra kết quả sau:
Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0
Các close () Phương pháp
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/python
# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
# Close opend 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
Các tập tin đối tượng cung cấp một tập các phương pháp truy cập vào làm cho cuộc sống của chúng tôi dễ dàng hơn. Chúng ta sẽ thấy cách sử dụng phương thức read () và write () để đọc và ghi tệp.
Các write () Phương pháp
Phương thức write () 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/python
# Open a file
fo = open("foo.txt", "wb")
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!!
Các read () Phương pháp
Phương thức read () đọ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 lấy một tệp foo.txt , mà chúng tôi đã tạo ở trên.
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend 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. Đối số offset cho biết số byte được di chuyển. Đối số from chỉ định vị trí tham chiếu mà từ đó các byte sẽ được di chuyển.
Nếu from được đặt thành 0, có nghĩa là sử dụng phần đầu của tệp làm vị trí tham chiếu và 1 có nghĩa là sử dụng vị trí hiện tại làm vị trí tham chiếu và 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/python
# 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 opend 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, bạn cần nhập nó trước 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 ()
Phương thức rename () 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à ví dụ để đổi tên tệp hiện có test1.txt -
#!/usr/bin/python
import os
# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )
Các remove () Phương pháp
Bạn có thể sử dụng phương thức remove () để 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à ví dụ để xóa một tệp test2.txt hiện có -
#!/usr/bin/python
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.
Các mkdir () Phương pháp
Bạn có thể sử dụng phương thức mkdir () củaosmô-đun để tạo các thư mục trong thư mục hiện tại. Bạn cần cung cấp một đối số cho phương thức 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à ví dụ để tạo kiểm tra thư mục trong thư mục hiện tại -
#!/usr/bin/python
import os
# Create a directory "test"
os.mkdir("test")
Các chdir () Phương pháp
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à ví dụ để vào thư mục "/ home / newdir" -
#!/usr/bin/python
import os
# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
Các getcwd () Phương pháp
Phương thức getcwd () hiển thị thư mục làm việc hiện tại.
Cú pháp
os.getcwd()
Thí dụ
Sau đây là ví dụ để cung cấp thư mục hiện tại:
#!/usr/bin/python
import os
# This would give location of the current directory
os.getcwd()
Các rmdir () Phương pháp
Phương thức rmdir () 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à 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/python
import os
# This would remove "/tmp/test" directory.
os.rmdir( "/tmp/test" )
Phương pháp liên quan đến tệp & 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 : Đối tượng tệp 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.