Bài tập sử dụng module os: tìm một tệp trong ổ đĩa và ghi dữ liệu vào nó

0
194
Bài số 25 trong 26 bài của series Python Không Khó

Để giúp các bạn hiểu rõ hơn về module os mà mình đã nói ở bài trước, hôm nay mình sẽ đưa ra một bài tập nhỏ để áp dụng module os để tìm một file và ghi dữ liệu vào nó trong python.

1. Vấn đề đặt ra

Giả sử tôi có một file không nhớ tên của nó và nó lưu một số dữ liệu nhưng lại không nhớ nó ở đâu, và một file là file.txt có một số dữ liệu giống như là file ở trên. Nhiệm vụ của chúng ta bây giờ là tìm ra file đó và so sánh xem thử có file nào có dữ liệu gần giống với dữ liệu của file.txt hay không, nếu có thì ghi thêm dữ liệu vào.

file.txt của tôi có dữ liệu như sau:

bài tập sử dụng module os trong python

file cần tìm và chèn dữ liệu:

bài tập sừ dung module os trong python

Trong trường hợp này, tôi sẽ kiểm tra xem trong ổ đĩa có file có dòng nào có dữ liệu là 456 hay không, nếu có thì ghi thêm ở đây có nè vào sau dòng có 456.

2. Code minh họa

Dưới đay là code minh họa cho chương trình

3. Giải thích code

Đầu tiên là chúng ta thêm module os vào và khởi tạo đường dẫn, ở đây tôi sẽ tìm file ở trong ổ đĩa F:

Như đã giới thiệu về hàm os.walk() trong bài trước, hàm này sẽ trả về 3 thuộc tính là

  • dirpath:  các thư mục từ những gì bạn đã chỉ định.
  • dirname: các thư mục con từ root.
  • namefiles: in ra tất cả các tập tin từ thư mục gốc và thư mục.

Sau đó trong danh sách namfiles, thêm tên của file vào đường dẫn. Hàm SuaFile sẽ đảm nhận nhiệm vụ tiếp theo.

Giải thích hàm SuaFile

Nhiệm vụ của đoạn code này là mở file sau đó tạo một danh sách gồm các dòng của file theo đường dẫn path được truyền vào. Hàm enumerate() sé trả về hai đối tượng:

  • index: là thứ tự của mỗi phần tử của danh sách
  • line: là phần từ đó.

Ở điều kiện if sẽ kiểm tra giá trị mà hàm MoFile() trả về, nếu là True thì hàm insert() sẽ thêm “ở đây có nè” vào vị trí index, còn Flase thì sẽ bỏ qua

Đoạn code này sẽ có nhiệm vụ là viết lại các phần tử trong danh sách sau khi đã thêm ở trên vào.

Tương tự như ở trên thì hàm này cũng mở file.txt và thêm các dòng của file đó vào danh sách lin. Hàm strip() sẽ bỏ qua các kí tự trông ở trước và sau mỗi dòng và so sánh mỗi phần tử trong lin với line được truyền vào, nếu giống nhau thì sẽ trả về True, còn sai thì trả về False.

Cuối cùng là gọi hàm CheckFile() và gửi vào đó đường dẫn

Thử chạy chương trình xem nào.

Ồ, nó đã tìm thấy file có dữ liệu là 456 và in ra màn hình rồi nè

Thử đi theo đường dẫn và mở file đó lên xem

Nó cũng đã ghi dòng chứ hello vào sau dòng 456 rồi nè.

Vậy là chương trình của chúng ta đã chạy rồi, hi vọng các bạn có thể thông qua bài viết có thể hiểu hơn ứng dụng của module os.

Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.

Hẹn các bạn vào các bài học sau!!!

Các bài viết trong SeriesBài trước: Tìm hiểu về Module os trong PythonBài sau: Hàm Map, Filter và Lambda trong Python

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây