Giới thiệu
Python là một công cụ tuyệt vời để xử lý dữ liệu. Một số nhiệm vụ phổ biến nhất trong lập trình liên quan đến việc đọc, viết hoặc thao tác dữ liệu. Vì lý do này, nó đặc biệt hữu ích khi biết cách xử lý các định dạng tệp khác nhau 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 người dùng để kiểm soát truy cập. Danh sách người dùng của bạn có thể được lưu trữ dưới dạng tệp văn bản, cho phép bạn kiểm tra quyền truy cập hoặc sửa đổi quyền. Với Python, việc có thể mở, đọc, ghi vào và đóng các tệp sẽ giúp bạn làm việc với các tác vụ như thế này.
Hướng dẫn này sẽ mô tả ngắn gọn một số định dạng tệp Python có thể xử lý. Sau khi giới thiệu ngắn gọn về những người đó, bạn sẽ học cách mở, đọc và viết một tệp văn bản bằng Python 3. Khi bạn hoàn thành, bạn sẽ có thể xử lý bất kỳ tệp văn bản thuần túy nào trong Python.
Điều kiện tiên quyết
Đối với hướng dẫn này, bạn nên cài đặt Python 3 cũng như môi trường lập trình cục bộ được thiết lập trên máy tính của bạn. Nếu đây không phải là trường hợp, bạn có thể được thiết lập bằng cách làm theo hướng dẫn cài đặt và thiết lập phù hợp cho hệ điều hành của mình:
- Ubuntu 22.04 hoặc Debian 8
- Centos 7
- Mac OS X.
- Windows 10
Tiểu sử
Python rất linh hoạt và có thể xử lý một số định dạng tệp khác nhau một cách dễ dàng, bao gồm nhưng không giới hạn ở các mục sau:
Văn bản thô | Tệp văn bản trơn 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ỳ siêu dữ liệu có cấu trúc nào |
CSV | Các 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 theo định dạng bảng |
HTML | Các 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 dự định được hiển thị bởi một trình duyệt và thường được sử dụng với các trang web |
Json | Ký hiệu đối tượng JavaScript là một định dạng đơn giản và hiệu quả, khiến 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à chuyển dữ liệu có cấu trúc |
Hướng dẫn này sẽ tập trung vào làm việc với các tệp văn bản thuần túy.
Bước 1 - Tạo tệp văn bản
Trước khi chúng tôi có thể bắt đầu làm việc trong Python, chúng tôi cần đảm bảo rằng chúng tôi có một tệp để làm việc. Để thực hiện việc này, hãy mở trình chỉnh sửa mã của bạn và tạo một tệp văn bản đơn giản mới có tên là
days_file = open[path, 'r']
3.Trong tệp mới, nhập một vài dòng văn bản liệt kê các ngày trong tuần:
days.txt
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Tiếp theo, lưu tệp của bạn và ghi chú vị trí của nó. Đối với ví dụ này, người dùng của chúng tôi Sammy, đã lưu tệp ở đây dưới dạng
days_file = open[path, 'r']
4. Điều này sẽ rất quan trọng trong các bước sau, nơi chúng tôi mở tệp trong Python.sammy, saved the file here as days_file = open[path, 'r']
4. This will be very important in later steps, where we open the file in Python.Bây giờ bạn có một tệp để xử lý, bạn có thể bắt đầu mã.
Bước 2 - Mở tệp
Trong trình soạn thảo mã của bạn, hãy tạo một tệp Python mới và đặt tên cho nó
days_file = open[path, 'r']
5.Để mở một tệp trong Python, trước tiên chúng tôi cần một số cách để liên kết tệp trên đĩa với một biến trong Python. Quá trình này được gọi là mở một tệp và biến được gọi là xử lý tệp. Chúng tôi bắt đầu bằng cách nói với Python nơi tập tin. Vị trí của tệp của bạn thường được gọi là đường dẫn tệp -
days_file = open[path, 'r']
4 trong ví dụ này. Tạo một biến để lưu trữ thông tin đường dẫn này.files.py
path = '/home/sammy/days.txt'
Bây giờ, bạn có thể sử dụng chức năng Python từ ____27 để mở tệp
days_file = open[path, 'r']
3 của chúng tôi. Hàm days_file = open[path, 'r']
7 yêu cầu đường dẫn tệp là đối số đầu tiên của nó. Các chức năng cũng chấp nhận nhiều tham số khác. Tuy nhiên, quan trọng nhất là tham số days_file.read[]
0 tùy chọn. Đây là một chuỗi tùy chọn chỉ định chế độ mà tệp được mở. Chế độ bạn chọn sẽ phụ thuộc vào những gì bạn muốn làm với tệp. Dưới đây là một số chế độ có sẵn:
1: Sử dụng để đọc từ một tệpdays_file.read[]
2: Sử dụng để ghi vào tệpdays_file.read[]
3: Sử dụng để nối vào tệpdays_file.read[]
4: Sử dụng để đọc và ghi vào cùng một tệpdays_file.read[]
Trong ví dụ này, chúng tôi chỉ muốn đọc từ tệp, vì vậy chúng tôi sẽ sử dụng chế độ
days_file.read[]
1. Sử dụng chức năng days_file = open[path, 'r']
7 để mở tệp days_file = open[path, 'r']
3 và gán xử lý tệp kết quả cho biến days_file.read[]
8.files.py
days_file = open[path, 'r']
Bây giờ bạn đã mở tập tin, bước tiếp theo sẽ hướng dẫn bạn đọc nội dung của nó.
Bước 3 - Đọc một tệp
Vì tệp của chúng tôi đã được mở, giờ đây chúng tôi có thể thao tác nó [tức là đọc từ nó] thông qua biến mà nó được gán cho. Python cung cấp ba hoạt động liên quan để đọc thông tin từ một tệp. Hãy để một chút thời gian để hiểu làm thế nào mỗi người trong số họ hoạt động.
Sử dụng days_file.read[]
9
days_file.read[]
Hoạt động đầu tiên
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
0 trả về toàn bộ nội dung của tệp dưới dạng một chuỗi. Ví dụ:days_file.read[]
Kết quả sẽ là:
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
Lưu ý: Output Output
1 trong chuỗi trên đại diện cho một ký tự dòng mới. Khi tương tác trực tiếp với Python [như bạn có thể chỉ cần chạy
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
1 để hiển thị Newlines. Bạn cũng có thể sử dụng nó để thể hiện một dòng mới khi bạn đang tạo các chuỗi của riêng bạn. The Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
1 in the above
string represents a newline character. When interacting directly with Python [as you might when simply running Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
2 from the command line], it will use Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
1 to show newlines. You can also use it to represent a new line when you are creating strings of your own.Sử dụng Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
4
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
Hoạt động thứ hai
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
5 trả về dòng tiếp theo của tệp, trả lại văn bản lên và bao gồm ký tự dòng 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 tệp.days_file.readline[]
Kết quả sẽ là:
Output
'Monday\n'
Khi bạn đọc một dòng với hoạt động
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
4, điểm hiện tại mà tệp sẽ được đọc sẽ chuyển sang dòng tiếp theo. Nếu bạn gọi lại thao tác này, nó sẽ trả lại dòng tiếp theo trong tệp như vậy:days_file.readline[]
Output
'Tuesday\n'
Sử dụng Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
7
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
Hoạt động cuối cùng,
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
8 trả về một danh sách các dòng trong tệp, trong đó mỗi mục của danh sách đại diện cho một dòng duy nhất.days_file.readlines[]
path = '/home/sammy/days.txt'
0Một cái gì đó cần lưu ý khi bạn đang đọc từ các tệp, một khi một tệp đã được đọc bằng một trong các hoạt động đọc, nó không thể được đọc lại. Ví dụ: nếu bạn lần đầu tiên chạy
Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
9, sau đó là days_file.readline[]
0, 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 tệp, trước tiên bạn sẽ phải mở một biến tệp mới hoặc sử dụng phương thức days_file.readline[]
1, nằm ngoài phạm vi của hướng dẫn này. Nếu bạn muốn tìm hiểu thêm, Python có tài liệu tuyệt vời về các phương pháp này.Bây giờ chúng tôi đã đọc từ một tệp, hãy để tìm hiểu cách ghi vào một tệp mới.
Bước 4 - Viết tệp
Trong bước này, bạn sẽ viết một tệp mới bao gồm các ngày tiêu đề trong tuần, sau đó là nội dung của tệp đầu tiên. Đầu tiên, tạo một biến
days_file.readline[]
2.files.py
path = '/home/sammy/days.txt'
1Bạn cũng sẽ cần lưu trữ các ngày trong tuần trong một biến mà chúng tôi sẽ gọi là
days_file.readline[]
3. Mã này mở tệp ở chế độ đọc, đọc tệp và lưu trữ đầu ra được trả về từ hoạt động đọc trong biến mới của chúng tôi days_file.readline[]
3. Để làm cho nó dễ dàng hơn, mã từ bước 2 được bao gồm.Step 2 is included.files.py
path = '/home/sammy/days.txt'
2Bây giờ bạn có các biến cho tiêu đề và ngày trong tuần, bạn có thể bắt đầu viết vào tệp mới của mình. Đầu tiên, chỉ định vị trí của tệp. Một lần nữa, chúng tôi sẽ sử dụng thư mục
days_file.readline[]
5, vì vậy đường dẫn của chúng tôi sẽ là days_file.readline[]
6. Sau đó, bạn có thể mở tệp mới ở chế độ ghi, sử dụng hàm days_file = open[path, 'r']
7 với chế độ days_file.read[]
2 được chỉ định.files.py
path = '/home/sammy/days.txt'
3Lưu ý: Điều quan trọng cần lưu ý là, nếu
9 đã tồn tại trước khi mở tệp, nội dung cũ của nó sẽ bị ghi đè, vì vậy hãy cẩn thận khi sử dụng chế độ days_file.readline[]
2! It’s important to note that, if days_file.read[]
days_file.readline[]
9 already exists before opening the file, its old contents will be overwritten, so be careful when using the days_file.read[]
2 mode!Khi tệp mới được mở, bạn có thể thêm dữ liệu bằng phương thức
Output
'Monday\n'
1. Phương thức này lấy một tham số chuỗi duy nhất và ghi dữ liệu đó vào tệp. Nếu bạn muốn bắt đầu một dòng mới trong tệp, bạn phải cung cấp một cách rõ ràng ký tự dòng mới, Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
1, được bao gồm khi bạn gán Output
'Monday\n'
3 cho biến days_file.readline[]
2.Viết tiêu đề vào tập tin theo sau là những ngày trong tuần. Nó có thể hữu ích thêm vào một số câu
Output
'Monday\n'
5 về những gì chúng tôi đang viết vào tệp, thường được sử dụng để theo dõi tiến trình của tập lệnh của bạn.files.py
path = '/home/sammy/days.txt'
4Cuối cùng, bất cứ khi nào bạn kết thúc với một tập tin, điều quan trọng là phải đóng nó.
Bước 5 - Đóng tệp
Đóng một tệp đảm bảo rằng kết nối giữa tệp trên đĩa và xử lý tệp đã hoàn tất. Đóng các tệp cũng đảm bảo rằng các chương trình khác có thể truy cập chúng và giữ cho dữ liệu của bạn an toàn. Nếu bạn không sử dụng các câu lệnh
Output
'Monday\n'
6 như được mô tả trong Bước 6, hãy luôn đảm bảo đóng các tệp của bạn. Đối với ví dụ này, hãy đóng tất cả các tệp của chúng tôi bằng phương thức Output
'Monday\n'
7.Step 6, always make sure to close your files. For this example, close all our files using the Output
'Monday\n'
7 method.files.py
path = '/home/sammy/days.txt'
5Bây giờ tập lệnh đã hoàn tất bằng cách sử dụng các tệp, nó đã giải phóng tay cầm tệp bằng phương thức
Output
'Monday\n'
7.Bước 6 - Sử dụng các câu lệnh Output
'Monday\n'
6 [tùy chọn]
Output
'Monday\n'
Cách được đề xuất để làm việc với các tệp trong Python [thường được gọi là cách Pythonic] là sử dụng một tính năng của ngôn ngữ gọi là câu lệnh
Output
'Monday\n'
6. Những tuyên bố này là cách viết tốc ký để thiết lập một bối cảnh trong đó công việc được thực hiện và, một khi bối cảnh đó kết thúc, các chi tiết cuối cùng sẽ tự động được chăm sóc để ngăn chặn các lỗi phổ biến. Trong trường hợp làm việc với các tệp, câu lệnh Output
'Monday\n'
6 sẽ tự động đóng tệp để bạn không có xử lý tệp đó kéo dài khi bạn hoàn thành nhiệm vụ của mình.Pythonic way] is to use a feature of the language called Output
'Monday\n'
6 statements. These statements are shorthand ways to set up a context in which work is done and, once that context is over, final
details are automatically taken care of in order to prevent common errors. In the case of working with files, a Output
'Monday\n'
6 statement will automatically close the file so that you don’t have those file handles lingering once you are finished with your task.Như với bất kỳ khối nào trong Python, chẳng hạn như các định nghĩa chức năng, các câu lệnh
days_file.readline[]
2 hoặc vòng lặp, các câu lệnh Output
'Monday\n'
6 có dạng một câu lệnh đơn giản theo sau là days_file.readline[]
4 và một khối mã thụt. Dưới đây là một ví dụ về mã mở tệp và in nội dung của nó:path = '/home/sammy/days.txt'
6Hãy cùng bước đi qua những gì mã này làm từng bước một. Như trước đây, chúng tôi mở tệp bằng hàm Python, tích hợp
days_file = open[path, 'r']
7, chuyển các tham số đường dẫn và chế độ tệp. Tuy nhiên, vì chúng tôi đang sử dụng câu lệnh Output
'Monday\n'
6, thay vì gán xử lý tệp kết quả cho một biến bằng cách sử dụng days_file.readline[]
7, chúng tôi gán nó bằng từ khóa days_file.readline[]
8. Đây là một phần của câu lệnh Output
'Monday\n'
6 đầy đủ về cú pháp:path = '/home/sammy/days.txt'
7Sau
days_file.readline[]
4, chúng tôi chuyển sang dòng tiếp theo và thụt mã mã của chúng tôi, đó là cách Python tổ chức các khối chức năng. Như trước đây, chúng tôi có quyền truy cập vào xử lý tệp trong biến days_file.read[]
8, vì vậy chúng tôi có thể gọi phương thức Output
'Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n'
0 để có được tất cả các nội dung và Output
'Tuesday\n'
3 chúng.Lưu ý làm thế nào không có phương thức
Output
'Monday\n'
7 được gọi là, tuy nhiên. Điều này là do ngay khi mã rời khỏi khối này [nghĩa là, ngay khi dòng mã tiếp theo không được thụt vào hoặc tệp kết thúc], câu lệnh Output
'Monday\n'
6 Bối cảnh Bối cảnh biết tự động đóng các tệp đó. Những lợi ích cho điều này không chỉ là bạn không cần nhớ đóng các tệp của mình mỗi lần, mà còn tất cả logic của bạn để xử lý tệp đó đặc biệt là khác biệt về mặt trực quan và logic trong khối đó. Cấu trúc này giúp giữ cho mã của bạn sạch sẽ và có thể đọc được.Với suy nghĩ này, hãy để viết lại mẫu mã của chúng tôi trước khi sử dụng câu lệnh
Output
'Monday\n'
6:files.py
path = '/home/sammy/days.txt'
8Bây giờ mã được tổ chức nhiều hơn nhiều. Chúng tôi bắt đầu như trước bằng cách xác định một số biến: đường dẫn của hai tệp của chúng tôi và tiêu đề mà chúng tôi sẽ sử dụng để tìm thấy tệp mới. Sau đó, chúng tôi bắt đầu câu lệnh
Output
'Monday\n'
6 của chúng tôi, mở hai tệp của chúng tôi và lưu trữ các kết nối của chúng theo các biến được đặt tên phù hợp. Như trước đây, chúng tôi đọc nội dung của days_file.read[]
8, sau đó viết tiêu đề và những nội dung đó thành Output
'Tuesday\n'
9. Cuối cùng, chúng tôi kết thúc khối bằng cách khử mã mã của chúng tôi để in các giá trị của days_file.readline[]
2 và days_file.readline[]
3 mà chúng tôi đọc.Lưu ý: Không giống như một số khối khác trong Python, các biến được xác định trong các khối Output
6 có sẵn bên ngoài phạm vi đó. Unlike some other blocks in Python, variables defined
within
Output
'Monday\n'
6 blocks are available outside of that scope.Mặc dù có một số trường hợp bạn sẽ muốn sử dụng phương thức
Output
'Monday\n'
7 như được mô tả trước đó và điều quan trọng là phải biết nó hoạt động như thế nào, bạn sẽ sử dụng các câu lệnh Output
'Monday\n'
6 phổ biến nhất khi làm việc với các tệp trong Python.Bước 7 - Kiểm tra mã của chúng tôi
Trước khi bạn chạy mã của mình, đó là một ý tưởng tốt để đảm bảo mọi thứ có vẻ chính xác. Sản phẩm cuối cùng phải là một cái gì đó như thế này:
files.py
path = '/home/sammy/days.txt'
9Sau khi lưu mã của bạn, hãy mở thiết bị đầu cuối và chạy tập lệnh Python của bạn, như vậy:
days_file = open[path, 'r']
0Đầu ra sẽ như sau:
days_file = open[path, 'r']
1Bây giờ, hãy kiểm tra kỹ mã hoạt động đầy đủ bằng cách mở tệp mới [
days_file.readline[]
9]. Nếu mọi việc suôn sẻ, nó sẽ chứa điều này:new_days.txt
days_file = open[path, 'r']
2Sự kết luận
Trong hướng dẫn này, chúng tôi đã trải qua cách xử lý và thao tác các tệp văn bản thuần túy trong Python 3. Bây giờ bạn có thể mở, đọc, viết và đóng các tệp trong 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. Python cung cấp nhiều phương pháp hữu ích khác khi làm việc với đầu vào và đầu ra, và cũng cung cấp tài liệu để tìm hiểu thêm.