[Python cơ bản thường dùng trong công việc] Phần 5 : thao tác trên tập tin và thư mục

3728

Nội dung chương này sẽ hướng dẫn các thao tác liên quan đến tập tin và thư mục.

5.1. Tập tin (File)

5.1.1. Mở file

Trước khi muốn đọc hoặc ghi file, bạn cần có thao tác mở file theo cú pháp:

fh = open(filepath, mode)

Trong đó, filepath là đường dẫn của file sẽ mở và mode là chế độ để mở. Có một số chế độ là:

  • r : mở để đọc nội dung (mặc định)
  • w : mở để ghi nội dung
  • a : mở để ghi thêm nội dung vào cuối file.
  • r+ : mở để đọc và ghi. Con trỏ nằm ở đầu file.
  • w+ : mở để đọc và ghi. Ghi đè nếu file đã tồn tại, nếu file chưa tồn tại thì tạo file mới để ghi.
  • a+ : mở để đọc và thêm vào cuối file. Con trỏ nằm ở cuối file. Nếu file chưa tồn tại thì tạo file mới để ghi.

Mặc định là mở file text, nếu muốn mở file nhị phân (binary) thì thêm b , ví dụ: rb , wb , ab , rb+ , wb+ , ab+ .

Ví dụ:

f1 = open('test.txt', 'r')
f2 = open('access_log', 'a+')

Sau khi gọi hàm open() thành công thì sẽ trả về một object có các thuộc tính:

  • closed : True nếu file đã đóng
  • mode : chế độ khi mở file
  • name : tên của file
  • softspace : cờ đánh dấu softspace khi dùng với hàm
  • print

Việc làm python lương cạnh tranh

5.1.2. Đọc nội dung từ file

Sau khi file đã mở ở chế độ đọc thì gọi phương thức read([count]) để trả về toàn bộ nội dung của file. Ví dụ:

f1 = open('test.txt', 'r')
data = f1.read();

Hàm read() có nhận một tham số là số lượng byte muốn đọc. Nếu không truyền vào thì sẽ đọc hết nội dung của file. Ví dụ:

f2 = open('log.txt', 'r')
buffdata = f2.read(1024)

5.1.3. Ghi nội dung vào file

Nếu file được mở ở chế độ có thể ghi thì có thể dùng phương thức write() để ghi một nội dung vào file. Ví dụ:

f2 = open('access_log', 'a+')
f2.write('Attack detected')

5.1.4. Đóng file đã mở

Sau khi hoàn tất các thao tác đọc ghi file thì gọi phương thức close() để đóng file đã mở. Ví dụ:

f1.close()
f2.close()

5.1.5. Đổi tên file

Sử dụng phương thức os.rename(old, new) để đổi tên một file. Ví dụ:

import os
os.rename('test.txt', 'test_new.txt')

5.1.6. Xóa file

Sử dụng phương thức os.remove(file) để xóa một file khỏi hệ thống. Ví dụ:

import os
os.remove('test.txt')

5.2. Thư mục (Directory)

5.2.1. Tạo thư mục

Sử dụng phương thức os.mkdir(dir) để tạo thư mục. Ví dụ:

import os
os.mkdir('test')

5.2.2. Xóa thư mục

Sử dụng phương thức os.rmdir(dir) để xóa một thư mục. Ví dụ:

import os
os.rmdir('test')

5.2.3. Đọc nội dung thư mục

Sử dụng phương thức os.listdir(dir) để lấy danh sách tập tin, thư mục của thư mục dir . Khi gọi sẽ trả về một mảng danh sách các tập tin, thư mục. Ví dụ:

import os
allfiles = os.listdir('/root/downloads')
print allfiles

5.3. Module os

Module os là một module có nhiều phương thức hữu ích trong việc làm việc với các file và directory, như:

  • os.chdir(path) : đổi thư mục hiện hành
  • os.getcwd() : trả về thư mục hiện hành
  • os.chmod(path, mode) : CHMOD một đường dẫn
  • os.chown(path, uid, gid) : CHOWN một đường dẫn
  • os.makedirs(path[, mode]) : tạo đường dẫn (có recursive)
  • os.removedirs(path) : xóa một đường dẫn (có recursive)

Xem thêm tại https://docs.python.org/2/library/os.html

5.4. Module os.path

Module os.path hỗ trợ các phương thức giúp thao tác nhanh chóng và thuận tiện hơn trên đường dẫn.

  • os.path.exists(path) : kiểm tra 1 đường dẫn có tồn tại hay không
  • os.path.getsize(path) : lấy file size (byte)
  • os.path.isfile(path) : kiểm tra xem có phải là một file thông thường
  • os.path.isdir(path) : kiểm tra xem có phải là một thư mục
  • os.path.dirname(path) : trả về tên thư mục của path
  • os.path.getatime(path) : trả về thời gian truy cập mới nhất
  • os.path.getmtime(path) : trả về thời gian chỉnh sửa cuối cùng
  • os.path.getctime(path) : trả về thời gian chỉnh sửa cuối của metadata trên một số hệ thống. Hoặc trả về thời gian tạo file trên Windows.

Xem thêm tại https://docs.python.org/2/library/os.path.html