Hướng dẫn exists python - trăn tồn tại

Nội dung chính

  • Kiểm tra tồn tại của đường dẫn trong python | os.path.exists()
  • Kiểm tra tồn tại của file trong python | os.path.isfile()
  • Kiểm tra tồn tại của thư mục trong python | os.path.isdir()
  • Kiểm tra đường dẫn chỉ định là file hay thư mục trong python
  • Kiểm tra tồn tại của file và thư mục trong python | Path.exists()
  • Tổng kết và thực hành

Hướng dẫn cách kiểm tra tồn tại của file và thư mục trong python. Bạn sẽ học được cách kiểm tra một tệp (hoặc thư mục) có tồn tại hay không trong Python bằng các hàm và phương thức cài sẵn sau bài học này.

Chúng ta có 5 phương pháp kiểm tra tồn tại của file và thư mục trong python như sau:

  • os.path.exists(): Kiểm tra tồn tại của đường dẫn trong python
  • os.path.isfile(): Kiểm tra tồn tại của file trong python
  • os.path.isdir(): Kiểm tra tồn tại của thư mục trong python
  • Kiểm tra đường dẫn chỉ định là file hay thư mục trong python
  • Path.exists(): Kiểm tra tồn tại của file và thư mục trong python

Kiểm tra tồn tại của đường dẫn trong python | os.path.exists()

Để kiểm tra tồn tại của đường dẫn trong python, chúng ta sử dung hàm os.path.exists() được tích hợp trong module os, với cú pháp sau đây

os.path.exists(path)

Trong đó

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 là đường dẫn của file hoặc thư mục cần kiểm tra.

Nếu đường dẫn

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 tồn tại, giá trị True sẽ được trả về. Nếu
import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 không tồn tại, False sẽ được trả về.

Ví dụ, bạn có một thư mục có cấu trúc như sau:

data
├── user
│   ├── dir1
│   └── user.txt
├── client
└── move.py

Chúng ta kiểm tra tồn tại của đường dẫn các file và thư mục như sau:

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

Kiểm tra tồn tại của file trong python | os.path.isfile()

Để kiểm tra tồn tại của file trong python, chúng ta sử dung hàm os.path.isfile() được tích hợp trong module os, với cú pháp sau đây.

os.path.isfile()

Trong đó

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 là đường dẫn của file cần kiểm tra tồn tại.

Nếu file với đường dẫn

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 tồn tại, giá trị True sẽ được trả về. Nếu
import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 không tồn tại, False sẽ được trả về.

Lưu ý là nếu chỉ định

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 là một đường dẫn thư mục, kể cả thư mục đó có tồn tại thì False cũng sẽ được trả về.

import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

Ví dụ:

import os

filepath = './user/user.txt'
print(os.path.isfile(filepath))


filepath2 = './user/name.txt'
print(os.path.isfile(filepath))


dirpath = './user/dir1'
print(os.path.isfile(dirpath))

Kiểm tra tồn tại của thư mục trong python | os.path.isdir()

Để kiểm tra tồn tại của thư mục trong python, chúng ta sử dung hàm os.path.isdir() được tích hợp trong module os, với cú pháp sau đây.

os.path.isdir()

Trong đó

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 là đường dẫn của thư mục cần kiểm tra tồn tại.

Nếu thư mục với đường dẫn

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 tồn tại, giá trị True sẽ được trả về. Nếu
import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 không tồn tại, False sẽ được trả về.

Lưu ý là nếu chỉ định

import os

filepath = './user/user.txt'
print(os.path.exists(filepath))


dirpath = './user/dir1'
print(os.path.exists(dirpath))


dirpath2 = './user/address'
print(os.path.exists(dirpath2))

0 là một đường dẫn file, kể cả file đó có tồn tại thì False cũng sẽ được trả về.

import os
print(os.path.isdir(dirpath))


print(os.path.isdir(filepath))

Ví dụ:

import os

dirpath = './user/dir1'
print(os.path.isdir(dirpath))


dirpath2 = './user/address'
print(os.path.isdir(dirpath2))


filepath = './user/user.txt'
print(os.path.isdir(filepath))

Kiểm tra đường dẫn chỉ định là file hay thư mục trong python

Sử dụng hai hàm os.path.isfile() và os.path.isdir() ở trên, chúng ta có thể kiểm tra một đường dẫn là file hay thư mục trong python.
Ví dụ, bạn có một thư mục có cấu trúc như sau:

data
├── user
│   ├── dir1
│   ├── address.txt
│   └── user.txt
├── client
└── move.py

Bạn muốn di chuyển tất cả các file trong thư mục

import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

1 sang thư mục
import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

2, và giữ lại các thư mục con trong thư mục
import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

1.
Khi đó bạn có thể kiểm tra đường dẫn là file hay thư mục trong python và chỉ tiến hành di chuyển nếu đường dẫn là file như sau:

import os
import shutil

src= './user'
dst= './client'

for obj in os.listdir(src):
path = os.path.join(src,obj)
if os.path.isfile(path):
shutil.move(path,dst)

Kết quả, chỉ có các file trong thư mục

import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

1 được di chuyển như sau:

data
├── user
│   └── dir1
│ 
├── client
│   ├── address.txt
│   └── user.txt
└── move.py

Nếu bạn chỉ muốn di chuyển thư mục con và giữ lại file trong ví dụ trên, hãy sử dụng os.path.isdir
thay cho os.path.isfile là xong.

  • Bạn có thể tìm hiểu thêm về shutil.move() tại bài Di chuyển file trong python
  • Bạn có thể tìm hiểu thêm về os.listdir() tại bài Lấy danh sách tên file và thư mục trong python

Kiểm tra tồn tại của file và thư mục trong python | Path.exists()

Ngoài sử dụng các hàm trong module os, bạn cũng có thể sử dụng phương thức Path.exists() để kiểm tra tồn tại của file và thư mục trong python, với cú pháp sau đây:

Path.exists()

Trong đó

import os
print(os.path.isfile(filepath))


print(os.path.isfile(dirpath))

5 là một path object - một instance được tạo ra từ class pathlib.Path() để chứa thông tin đường dẫn của file hoặc thư mục cần kiểm tra.

Nếu như đường dẫn đó tồn tại, kết quả True sẽ được trả về, và False trong trường hợp ngược lại.

Cách sử dụng như sau:

import pathlib

p = pathlib.Path('./user/address')
print(p.exists())


p2 = pathlib.Path('./user/user.txt')
print(p.exists())

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn về cách kiểm tra tồn tại của file và thư mục trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại Creativecommons và DMCA