CodeGym /Các khóa học /Python SELF VI /Làm việc với tệp trên đĩa

Làm việc với tệp trên đĩa

Python SELF VI
Mức độ , Bài học
Có sẵn

6.1 Làm việc với tệp

Python cung cấp nhiều hàm và module tích hợp sẵn để làm việc với tệp và thư mục. Các thao tác chính được thực hiện với việc sử dụng các module tích hợp os, shutil và những thứ khác.

Ba thao tác chính với tệp:

  • Sao chép
  • Di chuyển
  • Xóa

Để thực hiện chúng, module shutil là lý tưởng.

Sao chép tệp


import shutil

shutil.copy('source.txt', 'destination.txt')
        

Di chuyển tệp


import shutil

shutil.move('source.txt', 'destination.txt')
        

Xóa tệp


import os

os.remove('example.txt')
        

Dễ hiểu hơn bao giờ hết.

6.2 Kiểm tra sự tồn tại của tệp

Rất thường xuyên cần kiểm tra xem một tệp nhất định có tồn tại hay không. Để làm điều này, module os có một phương thức đặc biệt — exists().

Kiểm tra sự tồn tại của tệp


import os

if os.path.exists('example.txt'):
    print("File tồn tại")
else:
    print("File không tồn tại")
    # Nếu file không tồn tại, chương trình sẽ thực hiện hành động được mô tả trong khối else.
    # Ví dụ, có thể xuất cảnh báo, tạo một tệp mới hoặc thoát khỏi chương trình.

        

Nếu tệp không tồn tại, chương trình có thể xử lý điều này bằng điều kiện hoặc ném ra một ngoại lệ.

6.3 Kiểm tra loại đối tượng: tệp hoặc thư mục

Rất thường xuyên cần kiểm tra xem đối tượng có phải là tệp hay thư mục không. Ví dụ, nếu bạn đang đọc toàn bộ nội dung của thư mục và tệp cần xử lý từng cái một, còn thư mục thì theo cách khác.

Đối với các trường hợp như vậy, có hai phương thức đặc biệt — isdir(), phương thức kiểm tra xem đối tượng có phải là thư mục không, và isfile(), phương thức kiểm tra xem đối tượng có phải là tệp không.

Kiểm tra — đây có phải là thư mục không


if os.path.isdir('example_directory'):
    print("Đây là thư mục")
else:
    print("Đây không phải là thư mục")
        

Kiểm tra — đây có phải là tệp không


if os.path.isfile('example_file'):
    print("Đây là file")
else:
    print("Đây không phải là file")
        

Đây là những hàm rất hữu ích mà bạn sẽ sử dụng thường xuyên hơn bạn nghĩ. :)

6.4 Làm việc với đường dẫn

Module os có một module con là os.path, chứa các hàm hữu ích để làm việc với tệp và thư mục. Dưới đây là một số trong chúng:

Nhận phần mở rộng của tệp

Hàm splitext() chia tên tệp thành hai phần và trả về danh sách gồm hai phần tử: tên và phần mở rộng.


import os.path

# Nhận phần mở rộng của tệp
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Phần mở rộng của tệp: {file_extension}")
        

Nhận tên tệp không có phần mở rộng


import os.path

# Nhận tên tệp mà không có phần mở rộng
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Tên tệp không có phần mở rộng: {file_name}")
        

Nhận tên tệp từ đường dẫn

Hàm basename() chỉ trả về tên tệp, cắt bỏ toàn bộ đường dẫn dẫn đến nó.


import os.path

# Nhận tên tệp từ đường dẫn
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Tên tệp: {file_name}")
        

Nhận thư mục từ đường dẫn

Các bạn cũng có thể dễ dàng chỉ nhận được thư mục từ tên tệp bằng hàm dirname().


import os.path

# Nhận thư mục từ đường dẫn
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Thư mục: {directory}")
        

Kết hợp đường dẫn

Nếu bạn có thư mục riêng và tên tệp riêng, bạn có thể nhận được đường dẫn đầy đủ đến tệp đó.


import os.path

# Kết hợp đường dẫn
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Đường dẫn đầy đủ: {full_path}")
        

6.5 Đường dẫn không phụ thuộc nền tảng

Khi làm việc với đường dẫn, quan trọng là phải cân nhắc sự khác biệt giữa các hệ điều hành. Các dấu phân cách đường dẫn có thể khác nhau, và mã mà hoạt động trên một nền tảng có thể không hoạt động trên một nền tảng khác. Để tránh các vấn đề khi chuyển mã giữa các hệ điều hành khác nhau, sử dụng các hàm os.path.join(), os.path.abspath()os.path.dirname(), những hàm này đảm bảo tính tương thích với các nền tảng khác nhau.

Ví dụ:


import os

# Kết hợp đường dẫn một cách không phụ thuộc nền tảng
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Đường dẫn đầy đủ: {full_path}")
        

Nhận đường dẫn tuyệt đối

Nếu bạn chỉ có đường dẫn tương đối đối với thư mục làm việc hiện tại, nhưng bạn muốn chuyển đổi nó thành đường dẫn tuyệt đối, có hàm abspath().


import os.path

# Nhận đường dẫn tuyệt đối
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Đường dẫn tuyệt đối: {absolute_path}")
        

Quan trọng! Luôn sử dụng các hàm hệ thống khi làm việc với đường dẫn, vì mã của bạn có thể được chạy trên một hệ điều hành khác nơi không có dấu phân cách tệp \, mà là /, hoặc nơi cấm «:» trong đường dẫn hoặc điều gì đó khác.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION