Thứ năm, 13/10/2016 | 00:00 GMT+7

Cách xử lý tệp văn bản thuần túy trong Python 3

Python là một công cụ tuyệt vời để xử lý dữ liệu. Có khả năng là bất kỳ chương trình nào bạn viết sẽ liên quan đến việc đọc, ghi hoặc thao tác dữ liệu. Vì lý do này, sẽ đặc biệt hữu ích khi biết cách xử lý các định dạng file khác nhau, nơi lưu trữ các loại dữ liệu khác nhau.

Ví dụ: hãy xem xét một chương trình Python kiểm tra danh sách user để kiểm soát quyền truy cập. Danh sách user của bạn có thể sẽ được lưu trữ và lưu trong một file văn bản. Có lẽ bạn không làm việc với văn bản, nhưng thay vào đó có một chương trình phân tích tài chính. Để thực hiện một số xử lý số, bạn có thể sẽ phải nhập những số đó từ một bảng tính đã lưu. Dù ứng dụng của bạn là gì, nó gần như được đảm bảo dữ liệu nhập hoặc xuất sẽ có liên quan.

Hướng dẫn này sẽ mô tả ngắn gọn một số kiểu định dạng mà Python có thể xử lý. Sau phần giới thiệu ngắn gọn về các định dạng file , ta sẽ đi qua cách mở, đọc và ghi một file văn bản bằng Python 3.

Khi bạn hoàn thành hướng dẫn này, bạn có thể xử lý các file văn bản nào bằng Python.

Yêu cầu

Đối với hướng dẫn này, bạn nên cài đặt Python 3 cũng như cài đặt môi trường lập trình local trên máy tính của bạn . Nếu không đúng như vậy, bạn có thể cài đặt theo hướng dẫn cài đặt và cài đặt thích hợp cho hệ điều hành của bạn :

Lý lịch

Python cực kỳ phù hợp và có thể, tương đối dễ dàng, xử lý một số định dạng file khác nhau, bao gồm nhưng không giới hạn ở những định dạng sau:

Loại file Sự miêu tả
txt Tệp văn bản thuần túy lưu trữ dữ liệu chỉ đại diện cho các ký tự (hoặc chuỗi ) và loại trừ bất kỳ metadata có cấu trúc nào
CSV Tệp giá trị được phân tách bằng dấu phẩy sử dụng dấu phẩy (hoặc các dấu phân cách khác) để cấu trúc dữ liệu được lưu trữ, cho phép dữ liệu được lưu ở định dạng bảng
HTML Tệp Ngôn ngữ Đánh dấu Siêu văn bản lưu trữ dữ liệu có cấu trúc và thường được sử dụng với hầu hết các trang web
JSON JavaScript Object Notation là một định dạng đơn giản và hiệu quả, làm cho nó trở thành một trong những định dạng được sử dụng phổ biến nhất để lưu trữ và truyền dữ liệu

Hướng dẫn này sẽ tập trung vào định dạng file txt .

Bước 1 - Tạo file văn bản

Trước khi có thể bắt đầu làm việc bằng Python, ta cần đảm bảo ta có một file để làm việc. Để làm điều này, ta sẽ mở một editor và tạo một file txt mới, ta hãy gọi nó là days.txt .

Trong file mới, nhập một vài dòng văn bản. Trong ví dụ này, hãy liệt kê các ngày trong tuần:

days.txt
Monday Tuesday Wednesday Thursday Friday Saturday Sunday 

Tiếp theo, lưu file của bạn và đảm bảo bạn biết bạn đặt nó ở đâu. Trong ví dụ của ta , user sammy của ta , đã lưu file tại đây: /users/sammy/days.txt . Điều này sẽ rất quan trọng trong các bước sau, nơi ta mở file bằng Python.

Bây giờ ta có một file txt để xử lý, ta có thể bắt đầu mã của bạn !

Bước 2 - Mở file

Trước khi có thể viết chương trình của bạn , ta phải tạo một file lập trình Python, vì vậy hãy tạo file files.py bằng editor của bạn. Để làm cho mọi thứ dễ dàng, hãy lưu nó trong cùng một folder với file days.txt của ta : /users/sammy/ .

Để mở một file bằng Python, trước tiên ta cần một số cách để liên kết file trên đĩa với một biến trong Python. Quá trình này được gọi là mở file . Ta bắt đầu bằng cách cho Python biết vị trí của file . Vị trí file của bạn thường được gọi là đường dẫn file . Để Python mở file của bạn, nó yêu cầu đường dẫn. Đường dẫn đến file days.txt của ta là: /users/sammy/days.txt . Trong Python, ta sẽ tạo một biến chuỗi để lưu trữ thông tin này. Trong tập lệnh files.py của ta , ta sẽ tạo biến path và đặt biến thành đường dẫn days.txt.

files.py
path = '/users/sammy/days.txt' 

Sau đó, ta sẽ sử dụng hàm open() của Python để mở file days.txt của ta . Hàm open() yêu cầu là đối số đầu tiên của nó là đường dẫn file . Hàm cũng cho phép nhiều tham số khác. Tuy nhiên, quan trọng nhất là tham số chế độ tùy chọn. Chế độ là một chuỗi tùy chọn chỉ định chế độ mà file được mở. Chế độ bạn chọn sẽ phụ thuộc vào những gì bạn muốn làm với file . Dưới đây là một số tùy chọn chế độ của ta :

  • 'r' : dùng để đọc
  • 'w' : dùng để viết
  • 'x' : sử dụng để tạo và ghi vào file mới
  • 'a' : sử dụng để thêm vào một file
  • 'r+' : sử dụng để đọc và ghi vào cùng một file

Trong ví dụ này, ta chỉ muốn đọc từ file , vì vậy ta sẽ sử dụng chế độ 'r' . Ta sẽ sử dụng hàm open() để mở file days.txt và gán nó cho biến days_file .

files.py
days_file = open(path,'r') 

Sau khi đã mở file , ta có thể đọc từ đó, ta sẽ thực hiện bước tiếp theo.

Bước 3 - Đọc file

Vì file của ta đã được mở, bây giờ ta có thể thao tác với nó (tức là đọc từ nó) thông qua biến mà ta đã gán cho nó. Python cung cấp ba hoạt động liên quan để đọc thông tin từ một file . Ta sẽ trình bày cách sử dụng cả ba thao tác này làm ví dụ mà bạn có thể thử để hiểu cách chúng hoạt động.

Thao tác đầu tiên <file>.read() trả về toàn bộ nội dung của file dưới dạng một chuỗi đơn.

days_file.read() 
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'

Thao tác thứ hai <file>.readline() trả về dòng tiếp theo của file , trả về văn bản lên đến và bao gồm ký tự dòng mới tiếp theo. Nói một cách đơn giản hơn, thao tác này sẽ đọc từng dòng một file .

days_file.readline() 
Output
'Monday\n'

Do đó, khi bạn đọc một dòng với thao tác readline, nó sẽ chuyển sang dòng tiếp theo. Vì vậy, nếu bạn gọi lại thao tác này, nó sẽ trả về dòng tiếp theo trong file , như được hiển thị.

days_file.readline() 
Output
'Tuesday\n'

Thao tác cuối cùng, <file>.readlines() trả về danh sách các dòng trong file , trong đó mỗi mục của danh sách đại diện cho một dòng duy nhất.

days_file.readlines() 
Output
['Monday\n', 'Tuesday\n', 'Wednesday\n', 'Thursday\n', 'Friday\n', 'Saturday\n', 'Sunday\n']

Một điều cần lưu ý khi bạn đang đọc từ file , sau khi file đã được đọc bằng một trong các thao tác đọc, nó sẽ không thể được đọc lại. Ví dụ: nếu bạn chạy lần đầu tiên days_file.read() sau đó là days_file.readlines() , thao tác thứ hai sẽ trả về một chuỗi trống. Do đó, bất cứ lúc nào bạn muốn đọc từ một file , trước tiên bạn sẽ phải mở một biến file mới. Bây giờ ta đã đọc từ một file , hãy tìm hiểu cách ghi vào một file mới.

Bước 4 - Viết file

Trong bước này, ta sẽ viết một file mới bao gồm tiêu đề Ngày trong tuần, sau đó là các ngày trong tuần. Đầu tiên, hãy tạo biến title của ta .

files.py
title = 'Days of the Week\n' 

Ta cũng cần lưu trữ các ngày trong tuần trong một biến chuỗi, ta sẽ gọi là days . Để dễ làm theo hơn, ta bao gồm mã từ các bước ở trên. Ta mở file ở chế độ đọc, đọc file và lưu trữ kết quả trả về từ hoạt động đọc trong các days biến mới của ta .

files.py
path = '/users/sammy/days.txt' days_file = open(path,'r') days = days_file.read() 

Bây giờ ta đã có các biến cho tiêu đề và các ngày trong tuần, ta có thể bắt đầu ghi vào file mới của bạn . Đầu tiên, ta cần xác định vị trí của file . , ta sẽ sử dụng folder /users/sammy/ . Ta sẽ phải chỉ định file mới mà ta muốn tạo. Vì vậy, đường dẫn của ta thực sự sẽ là /users/sammy/ new_days.txt . Ta cung cấp thông tin vị trí của bạn trong biến new_path . Sau đó, ta mở file mới của bạn ở chế độ ghi, sử dụng hàm open() với chế độ 'w' được chỉ định.

files.py
new_path = '/users/sammy/new_days.txt' new_days = open(new_path,'w') 

Điều quan trọng cần lưu ý, nếu new_days.txt đã tồn tại trước khi mở file , nội dung cũ của nó sẽ bị hủy, vì vậy hãy cẩn thận khi sử dụng chế độ 'w' .

Khi file mới của ta được mở, ta có thể đưa dữ liệu vào file bằng cách sử dụng thao tác ghi, <file>.write() . Thao tác ghi nhận một tham số duy nhất, phải là một chuỗi và ghi chuỗi đó vào file . Nếu bạn muốn bắt đầu một dòng mới trong file , bạn phải cung cấp rõ ràng ký tự dòng mới. Đầu tiên, ta viết tiêu đề cho file , sau đó là các ngày trong tuần. Hãy cũng thêm vào một số báo cáo in về những gì ta đang viết ra, đây thường là phương pháp hay để theo dõi tiến trình của các tập lệnh của bạn.

files.py
new_days.write(title) print(title)  new_days.write(days) print(days) 

Cuối cùng, khi nào ta hoàn thành một file , ta cần đảm bảo đóng nó. Ta thể hiện điều này trong bước cuối cùng của ta .

Bước 5 - Đóng file

Việc đóng file đảm bảo kết nối giữa file trên đĩa và biến file đã hoàn tất. Việc đóng file cũng đảm bảo các chương trình khác có thể truy cập chúng và giữ an toàn cho dữ liệu . Vì vậy, hãy luôn đảm bảo đóng các file của bạn. Bây giờ, hãy đóng tất cả các file của ta bằng cách sử dụng hàm <file>.close() .

files.py
days_file.close() new_days.close() 

Hiện ta đã xử lý xong các file bằng Python và có thể chuyển sang xem qua mã của ta .

Bước 6 - Kiểm tra mã của ta

Trước khi chạy mã của bạn , hãy đảm bảo mọi thứ đều ổn. Sản phẩm cuối cùng sẽ trông giống như sau:

files.py
path = '/users/sammy/days.txt' days_file = open(path,'r') days = days_file.read()   new_path = '/users/sammy/new_days.txt' new_days = open(new_path,'w')  title = 'Days of the Week\n' new_days.write(title) print(title)  new_days.write(days) print(days)  days_file.close() new_days.close() 

Sau khi lưu mã của bạn, hãy mở terminal và chạy tập lệnh Python của bạn, như sau:

  • python files.py

Đầu ra của ta sẽ như thế này:

Output
Days of the Week Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Bây giờ, hãy kiểm tra lại mã của ta đã hoạt động hoàn toàn chưa bằng cách mở file mới của ta ( new_days.txt ). Nếu mọi việc suôn sẻ, khi ta mở file mới của bạn , nó sẽ trông như thế này:

new_days.txt
Days of the Week Monday Tuesday Wednesday Thursday Friday Saturday Sunday 

Tệp của bạn sẽ giống hoặc tương tự - bạn đã hoàn thành hướng dẫn này!

Kết luận

Trong hướng dẫn này, ta đã xem qua cách xử lý và thao tác với các file văn bản thuần túy trong Python 3. Như vậy, bạn có thể mở, đọc, ghi và đóng các file bằng Python và bạn có thể tiếp tục làm việc với dữ liệu của riêng mình bằng Python.


Tags:

Các tin liên quan

Cách sử dụng các biến trong Python 3
2016-10-12
Cách lập chỉ mục và cắt chuỗi trong Python 3
2016-09-28
Cách định dạng văn bản trong Python 3
2016-09-15
Giới thiệu về cách làm việc với chuỗi trong Python 3
2016-09-15
Hiểu các kiểu dữ liệu trong Python 3
2016-09-14
Python 2 và Python 3: Cân nhắc thực tế
2016-08-17
Cách triển khai các ứng dụng web Python với Khung Micro Chai trên Ubuntu 14.04
2015-10-19
Cách triển khai các ứng dụng web Python với Framework Micro Chai trên CentOS 7
2015-10-19
Cách triển khai ứng dụng Python Web2py với uWSGI và Nginx trên Ubuntu 14.04
2015-03-17
Cách triển khai các ứng dụng Python Web2py với uWSGI và Nginx trên CentOS 7
2015-03-17