Tạo thư mục trong python | Laptrinhcanban.com

Tạo thư mục trong python

Hướng dẫn cách tạo thư mục trong python. Bạn sẽ học được cách tạo thư mục trong python bằng hàm mkdir() trong module os, cách tạo thư mục trong python cùng các thư mục trung gian bằng hàm mkdirs(), cũng như cách tạo thư mục trong python bằng phương thức Path.rmdir() trong module pathlib sau bài học này.

Tạo thư mục trong python | Hàm mkdir()

Để tạo thư mục mới trong python, chúng ta sử dụng hàm mkdir() trong module os với cú pháp sau đây:

os.mkdir(folder_path, mode=0o777, *, dir_fd=None)

Thông thường chúng ta bỏ đi phần lớn các đối số trong hàm và chỉ dùng cú pháp rút gọn sau đây:

os.mkdir(folder_path)

Trong đó folder_path là đường dẫn của thư mục cần tạo.

Cách sử dụng thì đơn giản như ví dụ sau:
Giả sử bạn có một thư mục có cấu trúc như sau:

data/
├── user
│   ├── dir
│   └── user.txt
└── mkdir.py

Nếu bạn muốn tạo một thư mục mới address nằm trong thư mục user, chúng ta sẽ viết như sau:

import os

folder_path = './user/address'
os.mkdir(folder_path)

Khi đó thư mục address sẽ được tạo ra như sau:

data/
├── user
│   ├── dir
│   ├── address
│   └── user.txt
└── mkdir.py

Cần lưu ý, hàm mkdir() không thể tạo thư mục trung gian, ví dụ như nếu bạn muốn tạo ra thư mục ./user/name/kiyoshi nhưng thư mục trung gian ./user/name không tồn tại trước đó, lỗi FileNotFoundError sẽ xảy ra:

import os

folder_path = './user/name/kiyoshi'
os.mkdir(folder_path)

#FileNotFoundError: [WinError 2] The system cannot find the file specified: './user/name/kiyoshi'

Lại nữa, nếu như bạn tạo một thư mục trong python mà thư mục đó vốn đã tồn tại trước đó, lỗi FileExistsError sẽ xảy ra:

FileExistsError: [WinError 183] Cannot create a file when that file already exists:

Tạo thư mục trong python cùng các thư mục trung gian | Hàm mkdirs()

Ở phần trên bạn đã biết chúng ta không thể dùng hàm kdir() để tạo một thư mục nếu thư mục trung gian trong đường dẫn chưa tồn tại.
Khi bạn muốn tạo thư mục trong python với cả thư mục trung gian, hãy dùng hàm mkdirs() với cú pháp sau đây:

os.makedirs(folder_path, mode=0o777, exist_ok=False)

Trong đó

  • folder_path là đường dẫn của thư mục cần tạo.
  • mode=0o777 chỉ định quyền truy cập của folder cần tạo
  • exist_ok: chỉ định hành động khi chúng ta tạo một thư mục vốn đã tồn tại. Nếu chỉ đinh exist_ok=True, lỗi cũng sẽ không xảy ra khi chúng ta tạo thư mục mà thư mục vốn đã tồn tại trước đó.

Thông thường chúng ta bỏ đi phần lớn các đối số trong hàm và chỉ dùng cú pháp rút gọn sau đây:

os.makedirs(folder_path)

Chúng ta sử dụng hàm os.makedirs() tương tự như với hàm os.makedir, khi muốn tạo một thư mục con trong một thư mục mẹ.

import os

folder_path = './user/address'
os.mkdirs(folder_path)

Điểm khác biệt là khi nếu trong đường dẫn của thư mục cần tạo có chứa thư mục trung gian chưa tồn tại trước đó, thì thư mục trung gian này cũng sẽ được tạo ra luôn:

import os

folder_path = './user/name/kiyoshi'
os.mkdirs(folder_path)

Ngoài ra, để tránh xảy ra lỗi khi bạn tạo một thư mục mà thư mục đó vốn đã tồn tại trước đó, chúng ta sử dụng hàm os.mkdirs() kèm đối số exist_ok=True như sau:

import os

folder_path = './user/name/kiyoshi'
os.mkdirs(folder_path,exist_ok=True)

Tạo thư mục trong python | Phương thức Path.rmdir()

Ngoài cách sử dụng hàm mkdir() hay mkdirs(), bạn cũng có thể dùng phương thức Path.rmdir() trong module pathlib để tạo thư mục trong python, với cú pháp sau đây:

Path.mkdir(mode=0o777, parents=False, exist_ok=False)

Trong đó

  • Path là một instance được tạo ra từ class pathlib.Path trong module pathlib chứa thông tin đường dẫn của thư mục cần tạo.
  • mode chỉ định quyền truy cập của thư mục cần tạo
  • parents chỉ định có tạo thư mục trung gian hay không. parents=True sẽ giúp tạo thư mục trung gian nếu thư mục này không tồn tại trước đó.
  • exist_ok chỉ định có trả lỗi về khi tạo một thư mục mà thư mục đó vốn đã tồn tại. exist_ok=True sẽ giúp tránh xảy ra lỗi khi chúng ta tạo một thư mục mà thư mục đó vốn đã tồn tại trước đó.

Thông thường chúng ta bỏ đi phần lớn các đối số trong hàm và chỉ dùng cú pháp rút gọn sau đây:

Path.mkdir()

Ví dụ, chúng ta có thư mục có cấu trúc sau:

data/
├── user
│   ├── dir
│   └── user.txt
└── mkdir.py

Giả sử chúng ta muốn tạo thư mục address bên trong thư mục user , chúng ta viết:

import pathlib

p = pathlib.Path('./user/address')
p.mkdir()

Sau khi chạy, thư mục address sẽ được tạo ra.

data/
├── user
│   ├── dir
│   ├── address
│   └── user.txt
└── mkdir.py

Nếu lúc này chúng ta muốn tạo lại thư mục address bằng cách chạy lại lệnh trên, do thư mục address đã tồn tại nên lỗi xảy ra:

FileExistsError:FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'user/address'

Để tránh lỗi này, chúng ta cần chỉ định thêm đối số exist_ok=True khi tạo một thư mục mà thư mục đó vốn đã tồn tại trước đó:

import pathlib

p = pathlib.Path('./user/address')
p.mkdir(exist_ok=True )

Giả sử chúng ta muốn tạo thư mục ./user/name/kiyoshi mà thư mục trung gian ./user/name chưa tồn tại trước đó, chúng ta sẽ chỉ định thêm đối số parents=True để tránh lỗi xảy ra như sau:

import pathlib

p = pathlib.Path('./user/name/kiyoshi')
p.mkdir(parents=True )

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách tạo 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.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.