os --- Giao diện hệ điều hành khác

Source code: Lib/os.py


Mô-đun này cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành. Nếu bạn chỉ muốn đọc hoặc ghi một tệp, hãy xem open(), nếu bạn muốn thao tác với các đường dẫn, hãy xem mô-đun os.path và nếu bạn muốn đọc tất cả các dòng trong tất cả các tệp trên dòng lệnh, hãy xem mô-đun fileinput. Để tạo các tệp và thư mục tạm thời, hãy xem mô-đun tempfile và để xử lý tệp và thư mục cấp cao, hãy xem mô-đun shutil.

Lưu ý về tính khả dụng của các chức năng này:

  • Thiết kế của tất cả các mô-đun phụ thuộc hệ điều hành tích hợp của Python sao cho miễn là có cùng chức năng thì nó sử dụng cùng một giao diện; ví dụ: hàm os.stat(path) trả về thông tin thống kê về path ở cùng định dạng (có nguồn gốc từ giao diện POSIX).

  • Các tiện ích mở rộng dành riêng cho một hệ điều hành cụ thể cũng có sẵn thông qua mô-đun os, nhưng việc sử dụng chúng tất nhiên là mối đe dọa đối với tính di động.

  • Tất cả các hàm chấp nhận tên đường dẫn hoặc tệp đều chấp nhận cả đối tượng byte và chuỗi và dẫn đến một đối tượng cùng loại nếu đường dẫn hoặc tên tệp được trả về.

  • Trên VxWorks, os.popen, os.fork, os.execv và os.spawn*p* không được hỗ trợ.

  • Trên nền tảng WebAssugging, Android và iOS, phần lớn mô-đun os không khả dụng hoặc hoạt động khác. Các API liên quan đến quy trình (ví dụ: fork(), execve()) và tài nguyên (ví dụ: nice()) không có sẵn. Những cái khác như getuid()getpid() là mô phỏng hoặc sơ khai. Nền tảng WebAssembly cũng thiếu hỗ trợ tín hiệu (ví dụ: kill(), wait()).

Ghi chú

Tất cả các hàm trong mô-đun này đều đưa ra OSError (hoặc các lớp con của nó) trong trường hợp tên và đường dẫn tệp không hợp lệ hoặc không thể truy cập hoặc các đối số khác có đúng loại nhưng không được hệ điều hành chấp nhận.

exception os.error

Bí danh cho ngoại lệ OSError tích hợp.

os.name

Tên của mô-đun phụ thuộc hệ điều hành đã được nhập. Các tên sau đây hiện đã được đăng ký: 'posix', 'nt', 'java'.

Xem thêm

sys.platform có độ chi tiết tốt hơn. os.uname() cung cấp thông tin phiên bản phụ thuộc vào hệ thống.

Mô-đun platform cung cấp khả năng kiểm tra chi tiết về danh tính của hệ thống.

Tên tệp, đối số dòng lệnh và biến môi trường

Trong Python, tên tệp, đối số dòng lệnh và biến môi trường được biểu diễn bằng kiểu chuỗi. Trên một số hệ thống, việc giải mã các chuỗi này đến và đi từ byte là cần thiết trước khi chuyển chúng sang hệ điều hành. Python sử dụng filesystem encoding and error handler để thực hiện chuyển đổi này (xem sys.getfilesystemencoding()).

Zz000zz được cấu hình khi khởi động Python bằng hàm PyConfig_Read(): xem các thành viên filesystem_encodingfilesystem_errors của PyConfig.

Thay đổi trong phiên bản 3.1: Trên một số hệ thống, việc chuyển đổi bằng mã hóa hệ thống tệp có thể không thành công. Trong trường hợp này, Python sử dụng surrogateescape encoding error handler, có nghĩa là các byte không thể giải mã được thay thế bằng ký tự Unicode U+DCxx khi giải mã và các byte này lại được dịch sang byte gốc khi mã hóa.

file system encoding phải đảm bảo giải mã thành công tất cả các byte dưới 128. Nếu mã hóa hệ thống tệp không cung cấp bảo đảm này, các hàm API có thể tăng UnicodeError.

Xem thêm locale encoding.

Chế độ Python UTF-8

Added in version 3.7: Xem PEP 540 để biết thêm chi tiết.

Chế độ UTF-8 của Python bỏ qua locale encoding và buộc sử dụng mã hóa UTF-8:

Lưu ý rằng cài đặt luồng tiêu chuẩn ở chế độ UTF-8 có thể bị PYTHONIOENCODING ghi đè (giống như chúng có thể ở chế độ nhận biết ngôn ngữ mặc định).

Do những thay đổi trong các API cấp thấp hơn đó, các API cấp cao hơn khác cũng thể hiện các hành vi mặc định khác nhau:

  • Đối số dòng lệnh, biến môi trường và tên tệp được giải mã thành văn bản bằng mã hóa UTF-8.

  • os.fsdecode()os.fsencode() sử dụng mã hóa UTF-8.

  • open(), io.open()codecs.open() sử dụng mã hóa UTF-8 theo mặc định. Tuy nhiên, họ vẫn sử dụng trình xử lý lỗi nghiêm ngặt theo mặc định để việc cố gắng mở tệp nhị phân ở chế độ văn bản có thể gây ra ngoại lệ thay vì tạo ra dữ liệu vô nghĩa.

Python UTF-8 Mode được bật nếu ngôn ngữ LC_CTYPE là C hoặc POSIX khi khởi động Python (xem hàm PyConfig_Read()).

Nó có thể được bật hoặc tắt bằng tùy chọn dòng lệnh -X utf8 và biến môi trường PYTHONUTF8.

Nếu biến môi trường PYTHONUTF8 hoàn toàn không được đặt thì trình thông dịch sẽ mặc định sử dụng cài đặt ngôn ngữ hiện tại, unless ngôn ngữ hiện tại được xác định là ngôn ngữ dựa trên ASCII cũ (như được mô tả cho PYTHONCOERCECLOCALE) và tính năng ép buộc ngôn ngữ bị vô hiệu hóa hoặc không thành công. Ở những ngôn ngữ cũ như vậy, trình thông dịch sẽ mặc định bật chế độ UTF-8 trừ khi được hướng dẫn rõ ràng là không làm như vậy.

Chế độ Python UTF-8 chỉ có thể được bật khi khởi động Python. Giá trị của nó có thể được đọc từ sys.flags.utf8_mode.

Xem thêm UTF-8 mode on Windowsfilesystem encoding and error handler.

Xem thêm

PEP 686

Python 3.15 sẽ đặt Chế độ Python UTF-8 làm mặc định.

Thông số quy trình

Các chức năng và mục dữ liệu này cung cấp thông tin và hoạt động trên quy trình và người dùng hiện tại.

os.ctermid()

Trả về tên tệp tương ứng với thiết bị đầu cuối điều khiển của quá trình.

sẵn có: Unix, not WASI.

os.environ

Đối tượng mapping trong đó khóa và giá trị là các chuỗi đại diện cho môi trường quy trình. Ví dụ: environ['HOME'] là tên đường dẫn của thư mục chính của bạn (trên một số nền tảng) và tương đương với getenv("HOME") trong C.

Ánh xạ này được ghi lại lần đầu tiên mô-đun os được nhập, thường là trong quá trình khởi động Python như một phần của quá trình xử lý site.py. Những thay đổi đối với môi trường được thực hiện sau thời gian này không được phản ánh trong os.environ, ngoại trừ những thay đổi được thực hiện bằng cách sửa đổi trực tiếp os.environ.

Ánh xạ này có thể được sử dụng để sửa đổi môi trường cũng như truy vấn môi trường. putenv() sẽ được gọi tự động khi ánh xạ được sửa đổi.

Trên Unix, khóa và giá trị sử dụng trình xử lý lỗi sys.getfilesystemencoding()'surrogateescape'. Sử dụng environb nếu bạn muốn sử dụng mã hóa khác.

Trên Windows, các phím được chuyển thành chữ hoa. Điều này cũng áp dụng khi nhận, cài đặt hoặc xóa một mục. Ví dụ: environ['monty'] = 'python' ánh xạ khóa 'MONTY' tới giá trị 'python'.

Ghi chú

Gọi trực tiếp putenv() không làm thay đổi os.environ, vì vậy tốt hơn là sửa đổi os.environ.

Ghi chú

Trên một số nền tảng, bao gồm FreeBSD và macOS, cài đặt environ có thể gây rò rỉ bộ nhớ. Tham khảo tài liệu hệ thống dành cho putenv().

Bạn có thể xóa các mục trong ánh xạ này để bỏ đặt các biến môi trường. unsetenv() sẽ được gọi tự động khi một mục bị xóa khỏi os.environ và khi một trong các phương thức pop() hoặc clear() được gọi.

Xem thêm

Chức năng os.reload_environ().

Thay đổi trong phiên bản 3.9: Đã cập nhật để hỗ trợ các toán tử hợp nhất (|) và cập nhật (|=) của PEP 584.

os.environb

Phiên bản byte của environ: một đối tượng mapping trong đó cả khóa và giá trị đều là đối tượng bytes đại diện cho môi trường quy trình. environenvironb được đồng bộ hóa (sửa đổi environb cập nhật environ và ngược lại).

environb chỉ khả dụng nếu supports_bytes_environTrue.

Added in version 3.2.

Thay đổi trong phiên bản 3.9: Đã cập nhật để hỗ trợ các toán tử hợp nhất (|) và cập nhật (|=) của PEP 584.

os.reload_environ()

Ánh xạ os.environos.environb là bộ đệm của các biến môi trường tại thời điểm Python bắt đầu. Do đó, những thay đổi đối với môi trường quy trình hiện tại sẽ không được phản ánh nếu được thực hiện bên ngoài Python hoặc bởi os.putenv() hoặc os.unsetenv(). Sử dụng os.reload_environ() để cập nhật os.environos.environb với bất kỳ thay đổi nào như vậy đối với môi trường quy trình hiện tại.

Cảnh báo

Chức năng này không an toàn cho luồng. Gọi nó trong khi môi trường đang được sửa đổi trong một luồng khác là một hành vi không xác định. Đọc từ os.environ hoặc os.environb hoặc gọi os.getenv() trong khi tải lại, có thể trả về kết quả trống.

Added in version 3.14.

os.chdir(path)
os.fchdir(fd)
os.getcwd()

Các chức năng này được mô tả trong Tập tin và thư mục.

os.fsencode(filename)

Mã hóa path-like filename thành filesystem encoding and error handler; trả về bytes không thay đổi.

fsdecode() là chức năng đảo ngược.

Added in version 3.2.

Thay đổi trong phiên bản 3.6: Hỗ trợ được thêm vào để chấp nhận các đối tượng triển khai giao diện os.PathLike.

os.fsdecode(filename)

Giải mã path-like filename từ filesystem encoding and error handler; trả về str không thay đổi.

fsencode() là chức năng đảo ngược.

Added in version 3.2.

Thay đổi trong phiên bản 3.6: Hỗ trợ được thêm vào để chấp nhận các đối tượng triển khai giao diện os.PathLike.

os.fspath(path)

Trả về biểu diễn hệ thống tập tin của đường dẫn.

Nếu str hoặc bytes được truyền vào, nó sẽ được trả về không thay đổi. Nếu không, __fspath__() sẽ được gọi và giá trị của nó được trả về miễn là nó là đối tượng str hoặc bytes. Trong tất cả các trường hợp khác, TypeError được nâng lên.

Added in version 3.6.

class os.PathLike

Một abstract base class cho các đối tượng đại diện cho đường dẫn hệ thống tệp, ví dụ: pathlib.PurePath.

Added in version 3.6.

abstractmethod __fspath__()

Trả về biểu diễn đường dẫn hệ thống tệp của đối tượng.

Phương thức này chỉ nên trả về một đối tượng str hoặc bytes, với ưu tiên là str.

os.getenv(key, default=None)

Trả về giá trị của biến môi trường key dưới dạng chuỗi nếu nó tồn tại hoặc default nếu không. key là một chuỗi. Lưu ý rằng vì getenv() sử dụng os.environ nên ánh xạ của getenv() cũng được ghi lại khi nhập và chức năng này có thể không phản ánh những thay đổi môi trường trong tương lai.

Trên Unix, các khóa và giá trị được giải mã bằng trình xử lý lỗi sys.getfilesystemencoding()'surrogateescape'. Sử dụng os.getenvb() nếu bạn muốn sử dụng mã hóa khác.

sẵn có: Unix, Windows.

os.getenvb(key, default=None)

Trả về giá trị của biến môi trường key dưới dạng byte nếu nó tồn tại hoặc default nếu không. key phải là byte. Lưu ý rằng vì getenvb() sử dụng os.environb nên ánh xạ của getenvb() cũng được ghi lại khi nhập và chức năng này có thể không phản ánh những thay đổi môi trường trong tương lai.

getenvb() chỉ khả dụng nếu supports_bytes_environTrue.

sẵn có: Unix.

Added in version 3.2.

os.get_exec_path(env=None)

Trả về danh sách các thư mục sẽ được tìm kiếm tệp thực thi có tên, tương tự như shell, khi khởi chạy một tiến trình. env, khi được chỉ định, phải là một từ điển biến môi trường để tra cứu PATH. Theo mặc định, khi envNone, environ sẽ được sử dụng.

Added in version 3.2.

os.getegid()

Trả về id nhóm hiệu quả của quy trình hiện tại. Điều này tương ứng với bit "set id" trên tệp đang được thực thi trong quy trình hiện tại.

sẵn có: Unix, not WASI.

os.geteuid()

Trả về id người dùng hiệu quả của quy trình hiện tại.

sẵn có: Unix, not WASI.

os.getgid()

Trả về id nhóm thực của quy trình hiện tại.

sẵn có: Unix.

Chức năng này vẫn còn sơ khai trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

os.getgrouplist(user, group, /)

Trả về danh sách id nhóm mà user thuộc về. Nếu group không có trong danh sách thì nó sẽ được đưa vào; thông thường, group được chỉ định làm trường ID nhóm từ bản ghi mật khẩu cho user, vì ID nhóm đó có khả năng bị bỏ qua.

sẵn có: Unix, not WASI.

Added in version 3.3.

os.getgroups()

Trả về danh sách id nhóm bổ sung được liên kết với quy trình hiện tại.

sẵn có: Unix, not WASI.

Ghi chú

Trên macOS, hành vi của getgroups() hơi khác so với các nền tảng Unix khác. Nếu trình thông dịch Python được xây dựng với mục tiêu triển khai là 10.5 trở về trước, getgroups() sẽ trả về danh sách id nhóm hiệu quả được liên kết với quy trình người dùng hiện tại; danh sách này được giới hạn ở số lượng mục nhập do hệ thống xác định, thường là 16 và có thể được sửa đổi bằng các lệnh gọi tới setgroups() nếu có đặc quyền phù hợp. Nếu được xây dựng với mục tiêu triển khai lớn hơn 10.5, getgroups() trả về danh sách truy cập nhóm hiện tại cho người dùng được liên kết với id người dùng hiệu quả của quy trình; danh sách truy cập nhóm có thể thay đổi trong suốt thời gian của quá trình, nó không bị ảnh hưởng bởi các cuộc gọi đến setgroups() và độ dài của nó không bị giới hạn ở 16. Giá trị mục tiêu triển khai, MACOSX_DEPLOYMENT_TARGET, có thể nhận được bằng sysconfig.get_config_var().

os.getlogin()

Trả về tên của người dùng đã đăng nhập trên thiết bị đầu cuối điều khiển của quy trình. Đối với hầu hết các mục đích, sẽ hữu ích hơn khi sử dụng getpass.getuser() vì cái sau sẽ kiểm tra các biến môi trường LOGNAME hoặc USERNAME để tìm ra người dùng là ai và quay lại pwd.getpwuid(os.getuid())[0] để lấy tên đăng nhập của id người dùng thực hiện tại.

sẵn có: Unix, Windows, not WASI.

os.getpgid(pid)

Trả về id nhóm quy trình của quy trình với id quy trình pid. Nếu pid bằng 0, id nhóm quy trình của quy trình hiện tại sẽ được trả về.

sẵn có: Unix, not WASI.

os.getpgrp()

Trả về id của nhóm quy trình hiện tại.

sẵn có: Unix, not WASI.

os.getpid()

Trả về id tiến trình hiện tại.

Chức năng này vẫn còn sơ khai trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

os.getppid()

Trả về id tiến trình của cha mẹ. Khi tiến trình gốc đã thoát, trên Unix id trả về là một trong tiến trình init (1), trên Windows nó vẫn là id đó, có thể đã được một tiến trình khác sử dụng lại.

sẵn có: Unix, Windows, not WASI.

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ cho Windows.

os.getpriority(which, who)

Nhận ưu tiên lập kế hoạch chương trình. Giá trị which là một trong các PRIO_PROCESS, PRIO_PGRP hoặc PRIO_USERwho được diễn giải liên quan đến which (mã định danh quy trình cho PRIO_PROCESS, mã định danh nhóm quy trình cho PRIO_PGRP và ID người dùng cho PRIO_USER). Giá trị 0 cho who biểu thị (tương ứng) quy trình gọi, nhóm quy trình của quy trình gọi hoặc ID người dùng thực của quy trình gọi.

sẵn có: Unix, not WASI.

Added in version 3.3.

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

Các tham số cho hàm getpriority()setpriority().

sẵn có: Unix, not WASI.

Added in version 3.3.

os.PRIO_DARWIN_THREAD
os.PRIO_DARWIN_PROCESS
os.PRIO_DARWIN_BG
os.PRIO_DARWIN_NONUI

Các tham số cho hàm getpriority()setpriority().

sẵn có: macOS

Added in version 3.12.

os.getresuid()

Trả về một bộ dữ liệu (ruid, euid, suid) biểu thị id người dùng thực, hiệu quả và đã lưu của quy trình hiện tại.

sẵn có: Unix, not WASI.

Added in version 3.2.

os.getresgid()

Trả về một bộ dữ liệu (rgid, egid, sgid) biểu thị các id nhóm thực, hiệu quả và đã lưu của quy trình hiện tại.

sẵn có: Unix, not WASI.

Added in version 3.2.

os.getuid()

Trả về id người dùng thực của quy trình hiện tại.

sẵn có: Unix.

Chức năng này vẫn còn sơ khai trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

os.initgroups(username, gid, /)

Gọi hệ thống initgroups() để khởi tạo danh sách truy cập nhóm với tất cả các nhóm mà tên người dùng được chỉ định là thành viên, cộng với id nhóm được chỉ định.

sẵn có: Unix, not WASI, not Android.

Added in version 3.2.

os.putenv(key, value, /)

Đặt biến môi trường có tên key thành chuỗi value. Những thay đổi như vậy đối với môi trường sẽ ảnh hưởng đến các quy trình con bắt đầu bằng os.system(), popen() hoặc fork()execv().

Việc gán cho các mục trong os.environ sẽ tự động được dịch sang các lệnh gọi tương ứng tới putenv(); tuy nhiên, các lệnh gọi tới putenv() không cập nhật os.environ, vì vậy thực tế tốt hơn là gán cho các mục của os.environ. Điều này cũng áp dụng cho getenv()getenvb(), tương ứng sử dụng os.environos.environb trong quá trình triển khai của chúng.

Xem thêm chức năng os.reload_environ().

Ghi chú

Trên một số nền tảng, bao gồm FreeBSD và macOS, cài đặt environ có thể gây rò rỉ bộ nhớ. Tham khảo tài liệu hệ thống dành cho putenv().

Tăng một auditing event os.putenv với các đối số key, value.

Thay đổi trong phiên bản 3.9: Chức năng này bây giờ luôn có sẵn.

os.setegid(egid, /)

Đặt id nhóm hiệu quả của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.seteuid(euid, /)

Đặt id người dùng hiệu quả của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.setgid(gid, /)

Đặt id nhóm của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.setgroups(groups, /)

Đặt danh sách id nhóm bổ sung được liên kết với quy trình hiện tại thành groups. groups phải là một chuỗi và mỗi phần tử phải là một số nguyên xác định một nhóm. Hoạt động này thường chỉ có sẵn cho siêu người dùng.

sẵn có: Unix, not WASI.

Ghi chú

Trên macOS, độ dài của groups không được vượt quá số id nhóm hiệu quả tối đa do hệ thống xác định, thường là 16. Xem tài liệu về getgroups() để biết các trường hợp nó có thể không trả về cùng một danh sách nhóm được đặt bằng cách gọi setgroups().

os.setns(fd, nstype=0)

Liên kết lại luồng hiện tại với không gian tên Linux. Xem trang man setns(2)namespaces(7) để biết thêm chi tiết.

Nếu fd đề cập đến một liên kết /proc/pid/ns/, setns() sẽ liên kết lại luồng gọi với không gian tên được liên kết với liên kết đó và nstype có thể được đặt thành một trong các CLONE_NEW* constants để áp đặt các ràng buộc đối với hoạt động (0 có nghĩa là không có ràng buộc).

Kể từ Linux 5.8, fd có thể đề cập đến bộ mô tả tệp PID lấy từ pidfd_open(). Trong trường hợp này, setns() liên kết lại luồng gọi vào một hoặc nhiều không gian tên giống như luồng được fd tham chiếu. Điều này tuân theo mọi ràng buộc do nstype áp đặt, đó là mặt nạ bit kết hợp một hoặc nhiều CLONE_NEW* constants, ví dụ: setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID). Tư cách thành viên của người gọi trong các không gian tên không xác định được giữ nguyên.

fd có thể là bất kỳ đối tượng nào có phương thức fileno() hoặc bộ mô tả tệp thô.

Ví dụ này liên kết lại luồng với không gian tên mạng của tiến trình init:

fd = os.open("/proc/1/ns/net", os.O_RDONLY)
os.setns(fd, os.CLONE_NEWNET)
os.close(fd)

sẵn có: Linux >= 3.0 with glibc >= 2.14.

Added in version 3.12.

Xem thêm

Chức năng unshare().

os.setpgrp()

Gọi hệ thống gọi setpgrp() hoặc setpgrp(0, 0) tùy theo phiên bản được triển khai (nếu có). Xem hướng dẫn sử dụng Unix để biết ngữ nghĩa.

sẵn có: Unix, not WASI.

os.setpgid(pid, pgrp, /)

Gọi lệnh gọi hệ thống setpgid() để đặt id nhóm quy trình của quy trình có id pid thành nhóm quy trình có id pgrp. Xem hướng dẫn sử dụng Unix để biết ngữ nghĩa.

sẵn có: Unix, not WASI.

os.setpriority(which, who, priority)

Đặt mức độ ưu tiên lập lịch chương trình. Giá trị which là một trong các PRIO_PROCESS, PRIO_PGRP hoặc PRIO_USERwho được diễn giải liên quan đến which (mã định danh quy trình cho PRIO_PROCESS, mã định danh nhóm quy trình cho PRIO_PGRP và ID người dùng cho PRIO_USER). Giá trị 0 cho who biểu thị (tương ứng) quy trình gọi, nhóm quy trình của quy trình gọi hoặc ID người dùng thực của quy trình gọi. priority là giá trị trong khoảng -20 đến 19. Mức ưu tiên mặc định là 0; mức độ ưu tiên thấp hơn gây ra việc lập kế hoạch thuận lợi hơn.

sẵn có: Unix, not WASI.

Added in version 3.3.

os.setregid(rgid, egid, /)

Đặt id nhóm thực và hiệu quả của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.setresgid(rgid, egid, sgid, /)

Đặt id nhóm thực, hiệu quả và đã lưu của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

Added in version 3.2.

os.setresuid(ruid, euid, suid, /)

Đặt id người dùng thực, hiệu quả và đã lưu của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

Added in version 3.2.

os.setreuid(ruid, euid, /)

Đặt id người dùng thực và hiệu quả của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.getsid(pid, /)

Gọi hệ thống gọi getsid(). Xem hướng dẫn sử dụng Unix để biết ngữ nghĩa.

sẵn có: Unix, not WASI.

os.setsid()

Gọi hệ thống gọi setsid(). Xem hướng dẫn sử dụng Unix để biết ngữ nghĩa.

sẵn có: Unix, not WASI.

os.setuid(uid, /)

Đặt id người dùng của quy trình hiện tại.

sẵn có: Unix, not WASI, not Android.

os.strerror(code, /)

Trả về thông báo lỗi tương ứng với mã lỗi trong code. Trên các nền tảng nơi strerror() trả về NULL khi có số lỗi không xác định, ValueError sẽ được nâng lên.

os.supports_bytes_environ

True nếu loại hệ điều hành gốc của môi trường là byte (ví dụ: False trên Windows).

Added in version 3.2.

os.umask(mask, /)

Đặt ô số hiện tại và trả về ô trước đó.

Chức năng này vẫn còn sơ khai trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

os.uname()

Trả về thông tin xác định hệ điều hành hiện tại. Giá trị trả về là một đối tượng có năm thuộc tính:

  • sysname - tên hệ điều hành

  • nodename - tên máy trên mạng (do triển khai xác định)

  • release - phát hành hệ điều hành

  • version - phiên bản hệ điều hành

  • machine - mã định danh phần cứng

Để tương thích ngược, đối tượng này cũng có thể lặp lại, hoạt động giống như một bộ năm chứa sysname, nodename, release, versionmachine theo thứ tự đó.

Một số hệ thống cắt ngắn nodename thành 8 ký tự hoặc thành phần chính; cách tốt hơn để lấy tên máy chủ là socket.gethostname() hoặc thậm chí socket.gethostbyaddr(socket.gethostname()).

Trên macOS, iOS và Android, điều này trả về tên và phiên bản kernel (tức là 'Darwin' trên macOS và iOS; 'Linux' trên Android). platform.uname() có thể được sử dụng để lấy tên và phiên bản hệ điều hành mà người dùng nhìn thấy trên iOS và Android.

sẵn có: Unix.

Thay đổi trong phiên bản 3.3: Kiểu trả về đã thay đổi từ một bộ dữ liệu thành một đối tượng giống bộ dữ liệu với các thuộc tính được đặt tên.

os.unsetenv(key, /)

Bỏ đặt (xóa) biến môi trường có tên key. Những thay đổi như vậy đối với môi trường sẽ ảnh hưởng đến các quy trình con bắt đầu bằng os.system(), popen() hoặc fork()execv().

Việc xóa các mục trong os.environ sẽ tự động được dịch thành lệnh gọi tương ứng tới unsetenv(); tuy nhiên, các lệnh gọi tới unsetenv() không cập nhật os.environ, vì vậy thực tế tốt hơn là xóa các mục của os.environ.

Xem thêm chức năng os.reload_environ().

Tăng một auditing event os.unsetenv với đối số key.

Thay đổi trong phiên bản 3.9: Chức năng này hiện luôn có sẵn và cũng có sẵn trên Windows.

os.unshare(flags)

Tách các phần của bối cảnh thực thi quy trình và di chuyển chúng vào một không gian tên mới được tạo. Xem trang man unshare(2) để biết thêm chi tiết. Đối số flags là một mặt nạ bit, kết hợp 0 ​​hoặc nhiều hơn CLONE_* constants, chỉ định những phần nào của bối cảnh thực thi sẽ không được chia sẻ khỏi các liên kết hiện có của chúng và được chuyển sang một không gian tên mới. Nếu đối số flags0 thì không có thay đổi nào được thực hiện đối với bối cảnh thực thi của quá trình gọi.

sẵn có: Linux >= 2.6.16.

Added in version 3.12.

Xem thêm

Chức năng setns().

Gắn cờ cho hàm unshare(), nếu quá trình triển khai hỗ trợ chúng. Xem unshare(2) trong hướng dẫn sử dụng Linux để biết tác dụng và tính khả dụng chính xác của chúng.

os.CLONE_FILES
os.CLONE_FS
os.CLONE_NEWCGROUP
os.CLONE_NEWIPC
os.CLONE_NEWNET
os.CLONE_NEWNS
os.CLONE_NEWPID
os.CLONE_NEWTIME
os.CLONE_NEWUSER
os.CLONE_NEWUTS
os.CLONE_SIGHAND
os.CLONE_SYSVSEM
os.CLONE_THREAD
os.CLONE_VM

Tạo đối tượng tệp

Các chức năng này tạo ra file objects mới. (Xem thêm open() để mở phần mô tả tệp.)

os.fdopen(fd, *args, **kwargs)

Trả về một đối tượng tệp đang mở được kết nối với bộ mô tả tệp fd. Đây là bí danh của hàm tích hợp open() và chấp nhận các đối số tương tự. Điểm khác biệt duy nhất là đối số đầu tiên của fdopen() phải luôn là số nguyên.

Hoạt động mô tả tập tin

Các hàm này hoạt động trên các luồng I/O được tham chiếu bằng cách sử dụng bộ mô tả tệp.

Bộ mô tả tệp là các số nguyên nhỏ tương ứng với một tệp đã được mở bởi quy trình hiện tại. Ví dụ: đầu vào tiêu chuẩn thường là bộ mô tả tệp 0, đầu ra tiêu chuẩn là 1 và lỗi tiêu chuẩn là 2. Sau đó, các tệp tiếp theo được mở bởi một quy trình sẽ được gán 3, 4, 5, v.v. Tên "bộ mô tả tập tin" hơi lừa đảo; trên nền tảng Unix, ổ cắm và đường ống cũng được tham chiếu bởi bộ mô tả tệp.

Phương pháp fileno() có thể được sử dụng để lấy bộ mô tả tệp được liên kết với file object khi được yêu cầu. Lưu ý rằng việc sử dụng trực tiếp bộ mô tả tệp sẽ bỏ qua các phương thức đối tượng tệp, bỏ qua các khía cạnh như bộ đệm dữ liệu bên trong.

os.close(fd)

Đóng bộ mô tả tập tin fd.

Ghi chú

Hàm này dành cho I/O cấp thấp và phải được áp dụng cho bộ mô tả tệp được trả về bởi os.open() hoặc pipe(). Để đóng một "đối tượng tệp" được trả về bởi hàm tích hợp open() hoặc popen() hoặc fdopen(), hãy sử dụng phương thức close() của nó.

os.closerange(fd_low, fd_high, /)

Đóng tất cả các bộ mô tả tệp từ fd_low (bao gồm) đến fd_high (độc quyền), bỏ qua lỗi. Tương đương với (nhưng nhanh hơn nhiều):

cho fd trong phạm vi (fd_low, fd_high):
    thử:
        os.close(fd)
    ngoại trừ OSError:
        vượt qua
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

Sao chép byte count từ bộ mô tả tệp src, bắt đầu từ offset offset_src, sang bộ mô tả tệp dst, bắt đầu từ offset offset_dst. Nếu offset_srcNone thì src được đọc từ vị trí hiện tại; tương ứng cho offset_dst.

Trong nhân Linux cũ hơn 5.3, các tệp được trỏ đến bởi srcdst phải nằm trong cùng một hệ thống tệp, nếu không thì OSError sẽ được nâng lên với errno được đặt thành errno.EXDEV.

Bản sao này được thực hiện mà không phải trả thêm chi phí chuyển dữ liệu từ hạt nhân sang không gian người dùng rồi quay lại hạt nhân. Ngoài ra, một số hệ thống tệp có thể triển khai các tối ưu hóa bổ sung, chẳng hạn như sử dụng liên kết lại (tức là hai hoặc nhiều nút chia sẻ con trỏ tới cùng một khối đĩa sao chép khi ghi; hệ thống tệp được hỗ trợ bao gồm btrfs và XFS) và bản sao phía máy chủ (trong trường hợp NFS).

Hàm sao chép byte giữa hai bộ mô tả tệp. Các tùy chọn văn bản, như mã hóa và kết thúc dòng, sẽ bị bỏ qua.

Giá trị trả về là số byte được sao chép. Số tiền này có thể ít hơn số tiền được yêu cầu.

Ghi chú

Trên Linux, không nên sử dụng os.copy_file_range() để sao chép một loạt tệp giả từ hệ thống tệp đặc biệt như Procfs và sysfs. Nó sẽ luôn sao chép không có byte nào và trả về 0 như thể tệp trống do sự cố nhân Linux đã biết.

sẵn có: Linux >= 4.5 with glibc >= 2.27.

Added in version 3.8.

os.device_encoding(fd)

Trả về một chuỗi mô tả mã hóa của thiết bị được liên kết với fd nếu thiết bị được kết nối với thiết bị đầu cuối; nếu không thì trả về None.

Trên Unix, nếu Python UTF-8 Mode được bật, hãy trả về 'UTF-8' thay vì mã hóa thiết bị.

Thay đổi trong phiên bản 3.10: Trên Unix, hàm này hiện triển khai Chế độ UTF-8 của Python.

os.dup(fd, /)

Trả về một bản sao của bộ mô tả tập tin fd. Bộ mô tả tập tin mới là non-inheritable.

Trên Windows, khi sao chép một luồng tiêu chuẩn (0: stdin, 1: stdout, 2: stderr), bộ mô tả tệp mới là inheritable.

sẵn có: not WASI.

Thay đổi trong phiên bản 3.4: Bộ mô tả tệp mới hiện không thể kế thừa được.

os.dup2(fd, fd2, inheritable=True)

Sao chép bộ mô tả tệp fd sang fd2, đóng phần sau trước nếu cần. Trả về fd2. Bộ mô tả tệp mới là inheritable theo mặc định hoặc không thể kế thừa nếu inheritableFalse.

sẵn có: not WASI.

Thay đổi trong phiên bản 3.4: Thêm tham số inheritable tùy chọn.

Thay đổi trong phiên bản 3.7: Trả về fd2 khi thành công. Trước đây, None luôn được trả lại.

os.fchmod(fd, mode)

Thay đổi chế độ của tệp do fd cung cấp thành mode số. Xem tài liệu về chmod() để biết các giá trị có thể có của mode. Kể từ Python 3.3, điều này tương đương với os.chmod(fd, mode).

Tăng một auditing event os.chmod với các đối số path, mode, dir_fd.

sẵn có: Unix, Windows.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Thay đổi trong phiên bản 3.13: Đã thêm hỗ trợ trên Windows.

os.fchown(fd, uid, gid)

Thay đổi id chủ sở hữu và nhóm của tệp do fd cung cấp thành số uidgid. Để giữ nguyên một trong các id, hãy đặt nó thành -1. Xem chown(). Kể từ Python 3.3, điều này tương đương với os.chown(fd, uid, gid).

Tăng một auditing event os.chown với các đối số path, uid, gid, dir_fd.

sẵn có: Unix.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

os.fdatasync(fd)

Buộc ghi tệp bằng bộ mô tả tệp fd vào đĩa. Không bắt buộc cập nhật siêu dữ liệu.

sẵn có: Unix.

Ghi chú

Chức năng này không có trên MacOS.

os.fpathconf(fd, name, /)

Trả về thông tin cấu hình hệ thống liên quan đến một tệp đang mở. name chỉ định giá trị cấu hình cần truy xuất; nó có thể là một chuỗi là tên của một giá trị hệ thống được xác định; những tên này được chỉ định trong một số tiêu chuẩn (POSIX.1, Unix 95, Unix 98 và các tiêu chuẩn khác). Một số nền tảng cũng xác định tên bổ sung. Tên của hệ điều hành máy chủ được đưa ra trong từ điển pathconf_names. Đối với các biến cấu hình không có trong ánh xạ đó, việc chuyển số nguyên cho name cũng được chấp nhận.

Nếu name là một chuỗi và không được biết đến, ValueError sẽ được nâng lên. Nếu một giá trị cụ thể cho name không được hệ thống máy chủ hỗ trợ, ngay cả khi nó được bao gồm trong pathconf_names, thì OSError sẽ được đưa ra cùng với errno.EINVAL cho số lỗi.

Kể từ Python 3.3, điều này tương đương với os.pathconf(fd, name).

sẵn có: Unix.

os.fstat(fd)

Nhận trạng thái của bộ mô tả tập tin fd. Trả về một đối tượng stat_result.

Kể từ Python 3.3, điều này tương đương với os.stat(fd).

Xem thêm

Chức năng stat().

os.fstatvfs(fd, /)

Trả về thông tin về hệ thống tệp chứa tệp được liên kết với bộ mô tả tệp fd, như statvfs(). Kể từ Python 3.3, điều này tương đương với os.statvfs(fd).

sẵn có: Unix.

os.fsync(fd)

Buộc ghi tệp bằng bộ mô tả tệp fd vào đĩa. Trên Unix, điều này gọi hàm fsync() gốc; trên Windows, chức năng MS _commit().

Nếu bạn đang bắt đầu với Python file object f được đệm, trước tiên hãy thực hiện f.flush(), sau đó thực hiện os.fsync(f.fileno()) để đảm bảo rằng tất cả các bộ đệm bên trong liên kết với f đều được ghi vào đĩa.

sẵn có: Unix, Windows.

os.ftruncate(fd, length, /)

Cắt bớt tệp tương ứng với bộ mô tả tệp fd, sao cho nó có kích thước tối đa là length byte. Kể từ Python 3.3, điều này tương đương với os.truncate(fd, length).

Tăng một auditing event os.truncate với các đối số fd, length.

sẵn có: Unix, Windows.

Thay đổi trong phiên bản 3.5: Đã thêm hỗ trợ cho Windows

os.get_blocking(fd, /)

Nhận chế độ chặn của bộ mô tả tệp: False nếu cờ O_NONBLOCK được đặt, True nếu cờ bị xóa.

Xem thêm set_blocking()socket.socket.setblocking().

sẵn có: Unix, Windows.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Trên Windows, chức năng này được giới hạn ở các đường ống.

Added in version 3.5.

Thay đổi trong phiên bản 3.12: Đã thêm hỗ trợ cho đường ống trên Windows.

os.grantpt(fd, /)

Cấp quyền truy cập vào thiết bị đầu cuối giả phụ được liên kết với thiết bị đầu cuối giả chính mà bộ mô tả tệp fd đề cập đến. Bộ mô tả tập tin fd không được đóng khi bị lỗi.

Gọi hàm thư viện chuẩn C grantpt().

sẵn có: Unix, not WASI.

Added in version 3.13.

os.isatty(fd, /)

Trả về True nếu bộ mô tả tệp fd được mở và kết nối với thiết bị tty(-like), nếu không thì False.

os.lockf(fd, cmd, len, /)

Áp dụng, kiểm tra hoặc xóa khóa POSIX trên bộ mô tả tệp đang mở. fd là một bộ mô tả tệp đang mở. cmd chỉ định lệnh sẽ sử dụng - một trong các F_LOCK, F_TLOCK, F_ULOCK hoặc F_TEST. len chỉ định phần file cần khóa.

Tăng một auditing event os.lockf với các đối số fd, cmd, len.

sẵn có: Unix.

Added in version 3.3.

os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST

Cờ chỉ định hành động mà lockf() sẽ thực hiện.

sẵn có: Unix.

Added in version 3.3.

os.login_tty(fd, /)

Chuẩn bị tty trong đó fd là bộ mô tả tệp cho phiên đăng nhập mới. Biến quy trình gọi thành quy trình dẫn đầu phiên; biến tty thành tty kiểm soát, stdin, stdout và stderr của quá trình gọi; đóng fd.

sẵn có: Unix, not WASI.

Added in version 3.11.

os.lseek(fd, pos, whence, /)

Đặt vị trí hiện tại của bộ mô tả tệp fd thành vị trí pos, được sửa đổi bởi whence và trả về vị trí mới tính bằng byte so với phần đầu của tệp. Các giá trị hợp lệ cho whence là:

  • SEEK_SET hoặc 0 - đặt pos tương ứng với phần đầu của tệp

  • SEEK_CUR hoặc 1 - đặt pos tương ứng với vị trí tệp hiện tại

  • SEEK_END hoặc 2 - đặt pos tương ứng với phần cuối của tệp

  • SEEK_HOLE -- đặt pos vào vị trí dữ liệu tiếp theo, liên quan đến pos

  • SEEK_DATA -- đặt pos vào lỗ dữ liệu tiếp theo, liên quan đến pos

Thay đổi trong phiên bản 3.3: Thêm hỗ trợ cho SEEK_HOLESEEK_DATA.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

Các tham số cho hàm lseek() và phương thức seek() trên file-like objects, để điều chỉnh chỉ báo vị trí tệp.

SEEK_SET

Điều chỉnh vị trí tệp so với phần đầu của tệp.

SEEK_CUR

Điều chỉnh vị trí tệp tương ứng với vị trí tệp hiện tại.

SEEK_END

Điều chỉnh vị trí tệp tương ứng với phần cuối của tệp.

Giá trị của chúng lần lượt là 0, 1 và 2.

os.SEEK_HOLE
os.SEEK_DATA

Các tham số cho hàm lseek() và phương thức seek() trên file-like objects, để tìm kiếm dữ liệu tệp và lỗ hổng trên các tệp được phân bổ thưa thớt.

SEEK_DATA

Điều chỉnh offset của tệp tới vị trí tiếp theo chứa dữ liệu, tương ứng với vị trí tìm kiếm.

SEEK_HOLE

Điều chỉnh độ lệch tập tin đến vị trí tiếp theo chứa lỗ, tương ứng với vị trí tìm kiếm. Một lỗ được định nghĩa là một chuỗi các số không.

Ghi chú

Các thao tác này chỉ có ý nghĩa đối với các hệ thống tập tin hỗ trợ chúng.

sẵn có: Linux >= 3.1, macOS, Unix

Added in version 3.3.

os.open(path, flags, mode=0o777, *, dir_fd=None)

Mở tệp path và đặt các cờ khác nhau theo flags và có thể cả chế độ của nó theo mode. Khi tính toán mode, giá trị umask hiện tại trước tiên sẽ bị ẩn đi. Trả về bộ mô tả tệp cho tệp mới mở. Bộ mô tả tập tin mới là non-inheritable.

Để biết mô tả về các giá trị cờ và chế độ, hãy xem tài liệu về thời gian chạy C; hằng số cờ (như O_RDONLYO_WRONLY) được xác định trong mô-đun os. Đặc biệt, trên Windows cần thêm O_BINARY để mở file ở chế độ nhị phân.

Chức năng này có thể hỗ trợ paths relative to directory descriptors với tham số dir_fd.

Tăng một auditing event open với các đối số path, mode, flags.

Thay đổi trong phiên bản 3.4: Bộ mô tả tệp mới hiện không thể kế thừa được.

Ghi chú

Chức năng này dành cho I/O cấp thấp. Để sử dụng thông thường, hãy sử dụng hàm open() tích hợp sẵn, hàm này trả về file object với các phương thức read()write(). Để bọc bộ mô tả tệp trong một đối tượng tệp, hãy sử dụng fdopen().

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.5: Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ thì hàm này sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ InterruptedError (xem PEP 475 để biết lý do).

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Các hằng số sau đây là các tùy chọn cho tham số flags cho hàm open(). Chúng có thể được kết hợp bằng toán tử bitwise OR |. Một số trong số chúng không có sẵn trên tất cả các nền tảng. Để biết mô tả về tính khả dụng và cách sử dụng của chúng, hãy tham khảo trang hướng dẫn open(2) trên Unix hoặc the MSDN trên Windows.

os.O_RDONLY
os.O_WRONLY
os.O_RDWR
os.O_APPEND
os.O_CREAT
os.O_EXCL
os.O_TRUNC

Các hằng số trên có sẵn trên Unix và Windows.

os.O_DSYNC
os.O_RSYNC
os.O_SYNC
os.O_NDELAY
os.O_NONBLOCK
os.O_NOCTTY
os.O_CLOEXEC

Các hằng số trên chỉ có trên Unix.

Thay đổi trong phiên bản 3.3: Thêm hằng số O_CLOEXEC.

os.O_BINARY
os.O_NOINHERIT
os.O_SHORT_LIVED
os.O_TEMPORARY
os.O_RANDOM
os.O_SEQUENTIAL
os.O_TEXT

Các hằng số trên chỉ có trên Windows.

os.O_EVTONLY
os.O_FSYNC
os.O_NOFOLLOW_ANY

Các hằng số trên chỉ có trên macOS.

Thay đổi trong phiên bản 3.10: Thêm các hằng số O_EVTONLY, O_FSYNC, O_SYMLINKO_NOFOLLOW_ANY.

os.O_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
os.O_PATH
os.O_TMPFILE
os.O_SHLOCK
os.O_EXLOCK

Các hằng số trên là phần mở rộng và không xuất hiện nếu chúng không được thư viện C xác định.

Thay đổi trong phiên bản 3.4: Thêm O_PATH trên các hệ thống hỗ trợ nó. Thêm O_TMPFILE, chỉ khả dụng trên Linux Kernel 3.11 trở lên.

os.openpty()

Mở một cặp thiết bị đầu cuối giả mới. Trả về một cặp mô tả tệp (master, slave) cho pty và tty tương ứng. Bộ mô tả tập tin mới là non-inheritable. Để có cách tiếp cận di động hơn (một chút), hãy sử dụng mô-đun pty.

sẵn có: Unix, not WASI.

Thay đổi trong phiên bản 3.4: Các bộ mô tả tệp mới hiện không thể kế thừa được.

os.pipe()

Tạo một đường ống. Trả về một cặp mô tả tệp (r, w) tương ứng có thể sử dụng để đọc và ghi. Bộ mô tả tập tin mới là non-inheritable.

sẵn có: Unix, Windows.

Thay đổi trong phiên bản 3.4: Các bộ mô tả tệp mới hiện không thể kế thừa được.

os.pipe2(flags, /)

Tạo một đường ống với flags được đặt nguyên tử. flags có thể được tạo bằng cách ORing cùng một hoặc nhiều giá trị sau: O_NONBLOCK, O_CLOEXEC. Trả về một cặp mô tả tệp (r, w) tương ứng có thể sử dụng để đọc và ghi.

sẵn có: Unix, not WASI.

Added in version 3.3.

os.posix_fallocate(fd, offset, len, /)

Đảm bảo rằng đủ dung lượng ổ đĩa được phân bổ cho tệp được chỉ định bởi fd bắt đầu từ offset và tiếp tục cho byte len.

sẵn có: Unix.

Added in version 3.3.

os.posix_fadvise(fd, offset, len, advice, /)

Thông báo ý định truy cập dữ liệu theo một mẫu cụ thể, do đó cho phép hạt nhân thực hiện tối ưu hóa. Lời khuyên áp dụng cho vùng của tệp được chỉ định bởi fd bắt đầu từ offset và tiếp tục cho byte len. advice là một trong các POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED hoặc POSIX_FADV_DONTNEED.

sẵn có: Unix.

Added in version 3.3.

os.POSIX_FADV_NORMAL
os.POSIX_FADV_SEQUENTIAL
os.POSIX_FADV_RANDOM
os.POSIX_FADV_NOREUSE
os.POSIX_FADV_WILLNEED
os.POSIX_FADV_DONTNEED

Các cờ có thể được sử dụng trong advice trong posix_fadvise() chỉ định mẫu truy cập có khả năng được sử dụng.

sẵn có: Unix.

Added in version 3.3.

os.pread(fd, n, offset, /)

Đọc tối đa n byte từ bộ mô tả tệp fd ở vị trí offset, giữ nguyên độ lệch của tệp.

Trả về một chuỗi byte chứa byte đã đọc. Nếu đã đạt đến phần cuối của tệp được tham chiếu bởi fd, một đối tượng byte trống sẽ được trả về.

sẵn có: Unix.

Added in version 3.3.

os.posix_openpt(oflag, /)

Mở và trả về bộ mô tả tệp cho thiết bị đầu cuối giả chính.

Gọi hàm thư viện chuẩn C posix_openpt(). Đối số oflag được sử dụng để đặt cờ trạng thái tệp và chế độ truy cập tệp như được chỉ định trong trang hướng dẫn sử dụng posix_openpt() trên hệ thống của bạn.

Bộ mô tả tệp được trả về là non-inheritable. Nếu giá trị O_CLOEXEC có sẵn trên hệ thống, nó sẽ được thêm vào oflag.

sẵn có: Unix, not WASI.

Added in version 3.13.

os.preadv(fd, buffers, offset, flags=0, /)

Đọc từ bộ mô tả tệp fd ở vị trí offset vào bytes-like objects buffers có thể thay đổi, giữ nguyên phần bù của tệp. Truyền dữ liệu vào từng bộ đệm cho đến khi đầy rồi chuyển sang bộ đệm tiếp theo trong chuỗi để giữ phần dữ liệu còn lại.

Đối số cờ chứa bitwise OR bằng 0 hoặc nhiều cờ sau:

Trả về tổng số byte thực sự đọc có thể nhỏ hơn tổng dung lượng của tất cả các đối tượng.

Hệ điều hành có thể đặt giới hạn (giá trị sysconf() 'SC_IOV_MAX') về số lượng bộ đệm có thể được sử dụng.

Kết hợp chức năng của os.readv()os.pread().

sẵn có: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Sử dụng cờ yêu cầu Linux >= 4.6.

Added in version 3.7.

os.RWF_NOWAIT

Đừng chờ đợi dữ liệu không có sẵn ngay lập tức. Nếu cờ này được chỉ định, lệnh gọi hệ thống sẽ trả về ngay lập tức nếu nó phải đọc dữ liệu từ bộ lưu trữ dự phòng hoặc chờ khóa.

Nếu một số dữ liệu được đọc thành công, nó sẽ trả về số byte đã đọc. Nếu không có byte nào được đọc, nó sẽ trả về -1 và đặt errno thành errno.EAGAIN.

sẵn có: Linux >= 4.14.

Added in version 3.7.

os.RWF_HIPRI

Đọc/ghi ưu tiên cao. Cho phép các hệ thống tệp dựa trên khối sử dụng tính năng thăm dò của thiết bị, mang lại độ trễ thấp hơn nhưng có thể sử dụng các tài nguyên bổ sung.

Hiện tại, trên Linux, tính năng này chỉ có thể sử dụng được trên bộ mô tả tệp được mở bằng cờ O_DIRECT.

sẵn có: Linux >= 4.6.

Added in version 3.7.

os.ptsname(fd, /)

Trả về tên của thiết bị đầu cuối giả phụ được liên kết với thiết bị đầu cuối giả chính mà bộ mô tả tệp fd đề cập đến. Bộ mô tả tập tin fd không được đóng khi bị lỗi.

Gọi hàm thư viện chuẩn C reentrant ptsname_r() nếu nó có sẵn; mặt khác, hàm thư viện chuẩn C ptsname(), không được đảm bảo an toàn cho luồng, sẽ được gọi.

sẵn có: Unix, not WASI.

Added in version 3.13.

os.pwrite(fd, str, offset, /)

Viết chuỗi byte trong str vào bộ mô tả tệp fd ở vị trí offset, giữ nguyên phần bù của tệp.

Trả về số byte thực sự được ghi.

sẵn có: Unix.

Added in version 3.3.

os.pwritev(fd, buffers, offset, flags=0, /)

Viết nội dung buffers vào bộ mô tả tệp fd ở offset offset, giữ nguyên offset của tệp. buffers phải là một chuỗi bytes-like objects. Bộ đệm được xử lý theo thứ tự mảng. Toàn bộ nội dung của bộ đệm đầu tiên được ghi trước khi chuyển sang bộ đệm thứ hai, v.v.

Đối số cờ chứa bitwise OR bằng 0 hoặc nhiều cờ sau:

Trả về tổng số byte thực sự được ghi.

Hệ điều hành có thể đặt giới hạn (giá trị sysconf() 'SC_IOV_MAX') về số lượng bộ đệm có thể được sử dụng.

Kết hợp chức năng của os.writev()os.pwrite().

sẵn có: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Sử dụng cờ yêu cầu Linux >= 4.6.

Added in version 3.7.

os.RWF_DSYNC

Cung cấp cờ tương đương cho mỗi lần ghi của O_DSYNC os.open(). Hiệu ứng cờ này chỉ áp dụng cho phạm vi dữ liệu được ghi bởi lệnh gọi hệ thống.

sẵn có: Linux >= 4.7.

Added in version 3.7.

os.RWF_SYNC

Cung cấp cờ tương đương cho mỗi lần ghi của O_SYNC os.open(). Hiệu ứng cờ này chỉ áp dụng cho phạm vi dữ liệu được ghi bởi lệnh gọi hệ thống.

sẵn có: Linux >= 4.7.

Added in version 3.7.

os.RWF_APPEND

Cung cấp cờ tương đương cho mỗi lần ghi của O_APPEND os.open(). Cờ này chỉ có ý nghĩa đối với os.pwritev() và tác dụng của nó chỉ áp dụng cho phạm vi dữ liệu được ghi bởi lệnh gọi hệ thống. Đối số offset không ảnh hưởng đến thao tác ghi; dữ liệu luôn được thêm vào cuối tập tin. Tuy nhiên, nếu đối số offset-1 thì tệp offset hiện tại sẽ được cập nhật.

sẵn có: Linux >= 4.16.

Added in version 3.10.

os.read(fd, n, /)

Đọc tối đa n byte từ bộ mô tả tệp fd.

Trả về một chuỗi byte chứa byte đã đọc. Nếu đã đạt đến phần cuối của tệp được tham chiếu bởi fd, một đối tượng byte trống sẽ được trả về.

Ghi chú

Hàm này dành cho I/O cấp thấp và phải được áp dụng cho bộ mô tả tệp được trả về bởi os.open() hoặc pipe(). Để đọc một "đối tượng tệp" được hàm dựng sẵn open() hoặc popen() hoặc fdopen() hoặc sys.stdin trả về, hãy sử dụng các phương thức read() hoặc readline() của nó.

Thay đổi trong phiên bản 3.5: Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ thì hàm này sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ InterruptedError (xem PEP 475 để biết lý do).

os.readinto(fd, buffer, /)

Đọc từ bộ mô tả tệp fd vào buffer object buffer có thể thay đổi.

Zz001zz phải có thể thay đổi và bytes-like. Khi thành công, trả về số byte đã đọc. Có thể đọc ít byte hơn kích thước của bộ đệm. Cuộc gọi hệ thống cơ bản sẽ được thử lại khi bị gián đoạn bởi tín hiệu, trừ khi trình xử lý tín hiệu đưa ra một ngoại lệ. Các lỗi khác sẽ không được thử lại và sẽ xuất hiện lỗi.

Trả về 0 nếu fd ở cuối tệp hoặc nếu buffer được cung cấp có độ dài 0 (có thể được sử dụng để kiểm tra lỗi mà không cần đọc dữ liệu). Không bao giờ trả về số âm.

Ghi chú

Hàm này dành cho I/O cấp thấp và phải được áp dụng cho bộ mô tả tệp được trả về bởi os.open() hoặc os.pipe(). Để đọc "đối tượng tệp" được trả về bởi hàm dựng sẵn open() hoặc sys.stdin, hãy sử dụng các hàm thành viên của nó, ví dụ: io.BufferedIOBase.readinto(), io.BufferedIOBase.read() hoặc io.TextIOBase.read()

Added in version 3.14.

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

Sao chép byte count từ bộ mô tả tệp in_fd sang bộ mô tả tệp out_fd bắt đầu từ offset. Trả về số byte đã gửi. Khi đạt tới EOF, hãy trả về 0.

Ký hiệu hàm đầu tiên được hỗ trợ bởi tất cả các nền tảng xác định sendfile().

Trên Linux, nếu offset được cung cấp là None thì các byte được đọc từ vị trí hiện tại của in_fd và vị trí của in_fd được cập nhật.

Trường hợp thứ hai có thể được sử dụng trên macOS và FreeBSD trong đó headerstrailers là các chuỗi bộ đệm tùy ý được ghi trước và sau khi dữ liệu từ in_fd được ghi. Nó trả về giống như trường hợp đầu tiên.

Trên macOS và FreeBSD, giá trị 0 cho count chỉ định gửi cho đến khi đạt đến cuối in_fd.

Tất cả các nền tảng đều hỗ trợ ổ cắm dưới dạng mô tả tệp out_fd và một số nền tảng cũng cho phép các loại khác (ví dụ: tệp thông thường, đường ống).

Các ứng dụng đa nền tảng không nên sử dụng các đối số headers, trailersflags.

sẵn có: Unix, not WASI.

Ghi chú

Để biết trình bao bọc cấp cao hơn của sendfile(), hãy xem socket.socket.sendfile().

Added in version 3.3.

Thay đổi trong phiên bản 3.9: Các thông số outin được đổi tên thành out_fdin_fd.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

Các tham số cho hàm sendfile(), nếu việc triển khai hỗ trợ chúng.

sẵn có: Unix, not WASI.

Added in version 3.3.

os.SF_NOCACHE

Tham số cho hàm sendfile(), nếu việc triển khai hỗ trợ nó. Dữ liệu sẽ không được lưu vào bộ nhớ ảo và sẽ được giải phóng sau đó.

sẵn có: Unix, not WASI.

Added in version 3.11.

os.set_blocking(fd, blocking, /)

Đặt chế độ chặn của bộ mô tả tệp được chỉ định. Đặt cờ O_NONBLOCK nếu chặn là False, xóa cờ nếu không.

Xem thêm get_blocking()socket.socket.setblocking().

sẵn có: Unix, Windows.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Trên Windows, chức năng này được giới hạn ở các đường ống.

Added in version 3.5.

Thay đổi trong phiên bản 3.12: Đã thêm hỗ trợ cho đường ống trên Windows.

os.splice(src, dst, count, offset_src=None, offset_dst=None, flags=0)

Chuyển byte count từ bộ mô tả tệp src, bắt đầu từ offset offset_src, sang bộ mô tả tệp dst, bắt đầu từ offset offset_dst.

Hành vi nối có thể được sửa đổi bằng cách chỉ định giá trị flags. Bất kỳ biến nào sau đây đều có thể được sử dụng, kết hợp bằng cách sử dụng bitwise OR (toán tử |):

  • Nếu SPLICE_F_MOVE được chỉ định, kernel sẽ được yêu cầu di chuyển các trang thay vì sao chép, nhưng các trang vẫn có thể được sao chép nếu kernel không thể di chuyển các trang khỏi hệ thống.

  • Nếu SPLICE_F_NONBLOCK được chỉ định, kernel sẽ được yêu cầu không chặn I/O. Điều này làm cho các hoạt động của đường ống nối không bị chặn, nhưng mối nối vẫn có thể bị chặn do các bộ mô tả tệp được nối có thể chặn.

  • Nếu SPLICE_F_MORE được chỉ định, nó sẽ gợi ý cho kernel rằng sẽ có nhiều dữ liệu hơn trong mối nối tiếp theo.

Ít nhất một trong các bộ mô tả tệp phải tham chiếu đến một đường ống. Nếu offset_srcNone thì src được đọc từ vị trí hiện tại; tương ứng cho offset_dst. Phần bù được liên kết với bộ mô tả tệp tham chiếu đến ống phải là None. Các tệp được trỏ bởi srcdst phải nằm trong cùng một hệ thống tệp, nếu không thì OSError sẽ được tạo ra với errno được đặt thành errno.EXDEV.

Bản sao này được thực hiện mà không phải trả thêm chi phí chuyển dữ liệu từ hạt nhân sang không gian người dùng rồi quay lại hạt nhân. Ngoài ra, một số hệ thống tập tin có thể triển khai các tối ưu hóa bổ sung. Việc sao chép được thực hiện như thể cả hai tệp đều được mở dưới dạng nhị phân.

Sau khi hoàn thành thành công, trả về số byte được nối vào hoặc ra khỏi đường ống. Giá trị trả về bằng 0 có nghĩa là kết thúc đầu vào. Nếu src đề cập đến một đường ống, thì điều này có nghĩa là không có dữ liệu nào để truyền và việc chặn sẽ không có ý nghĩa gì vì không có người ghi nào được kết nối với đầu ghi của đường ống.

Xem thêm

Trang người đàn ông splice(2).

sẵn có: Linux >= 2.6.17 with glibc >= 2.5

Added in version 3.10.

os.SPLICE_F_MOVE
os.SPLICE_F_NONBLOCK
os.SPLICE_F_MORE

Added in version 3.10.

os.readv(fd, buffers, /)

Đọc từ bộ mô tả tệp fd thành một số bytes-like objects buffers có thể thay đổi. Truyền dữ liệu vào từng bộ đệm cho đến khi đầy rồi chuyển sang bộ đệm tiếp theo trong chuỗi để giữ phần dữ liệu còn lại.

Trả về tổng số byte thực sự đọc có thể nhỏ hơn tổng dung lượng của tất cả các đối tượng.

Hệ điều hành có thể đặt giới hạn (giá trị sysconf() 'SC_IOV_MAX') về số lượng bộ đệm có thể được sử dụng.

sẵn có: Unix.

Added in version 3.3.

os.tcgetpgrp(fd, /)

Trả về nhóm quy trình được liên kết với thiết bị đầu cuối do fd cung cấp (một bộ mô tả tệp đang mở được trả về bởi os.open()).

sẵn có: Unix, not WASI.

os.tcsetpgrp(fd, pg, /)

Đặt nhóm quy trình được liên kết với thiết bị đầu cuối do fd cung cấp (một bộ mô tả tệp đang mở được trả về bởi os.open()) thành pg.

sẵn có: Unix, not WASI.

os.ttyname(fd, /)

Trả về một chuỗi chỉ định thiết bị đầu cuối được liên kết với bộ mô tả tệp fd. Nếu fd không được liên kết với thiết bị đầu cuối, một ngoại lệ sẽ xuất hiện.

sẵn có: Unix.

os.unlockpt(fd, /)

Mở khóa thiết bị đầu cuối giả phụ được liên kết với thiết bị đầu cuối giả chính mà bộ mô tả tệp fd đề cập đến. Bộ mô tả tập tin fd không được đóng khi bị lỗi.

Gọi hàm thư viện chuẩn C unlockpt().

sẵn có: Unix, not WASI.

Added in version 3.13.

os.write(fd, str, /)

Viết chuỗi byte trong str vào bộ mô tả tệp fd.

Trả về số byte thực sự được ghi.

Ghi chú

Hàm này dành cho I/O cấp thấp và phải được áp dụng cho bộ mô tả tệp được trả về bởi os.open() hoặc pipe(). Để viết một "đối tượng tệp" được hàm dựng sẵn open() hoặc popen() hoặc fdopen() hoặc sys.stdout hoặc sys.stderr trả về, hãy sử dụng phương thức write() của nó.

Thay đổi trong phiên bản 3.5: Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ thì hàm này sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ InterruptedError (xem PEP 475 để biết lý do).

os.writev(fd, buffers, /)

Viết nội dung của buffers vào bộ mô tả tệp fd. buffers phải là một chuỗi bytes-like objects. Bộ đệm được xử lý theo thứ tự mảng. Toàn bộ nội dung của bộ đệm đầu tiên được ghi trước khi chuyển sang bộ đệm thứ hai, v.v.

Trả về tổng số byte thực sự được ghi.

Hệ điều hành có thể đặt giới hạn (giá trị sysconf() 'SC_IOV_MAX') về số lượng bộ đệm có thể được sử dụng.

sẵn có: Unix.

Added in version 3.3.

Truy vấn kích thước của một thiết bị đầu cuối

Added in version 3.3.

os.get_terminal_size(fd=STDOUT_FILENO, /)

Trả về kích thước của cửa sổ terminal là (columns, lines), bộ dữ liệu loại terminal_size.

Đối số tùy chọn fd (STDOUT_FILENO mặc định hoặc đầu ra tiêu chuẩn) chỉ định bộ mô tả tệp nào sẽ được truy vấn.

Nếu bộ mô tả tệp không được kết nối với thiết bị đầu cuối, OSError sẽ được nâng lên.

shutil.get_terminal_size() là chức năng cấp cao thường được sử dụng, os.get_terminal_size là chức năng cấp thấp.

sẵn có: Unix, Windows.

class os.terminal_size

Một lớp con của tuple, chứa (columns, lines) kích thước cửa sổ terminal.

columns

Chiều rộng của cửa sổ terminal tính bằng ký tự.

lines

Chiều cao của cửa sổ terminal tính bằng ký tự.

Kế thừa của bộ mô tả tệp

Added in version 3.4.

Bộ mô tả tệp có cờ "có thể kế thừa" cho biết liệu bộ mô tả tệp có thể được kế thừa bởi các tiến trình con hay không. Kể từ Python 3.4, các bộ mô tả tệp do Python tạo theo mặc định là không thể kế thừa.

Trên UNIX, các bộ mô tả tệp không thể kế thừa được đóng trong các tiến trình con khi thực thi một chương trình mới, các bộ mô tả tệp khác sẽ được kế thừa. Lưu ý rằng các bộ mô tả tệp không thể kế thừa vẫn là inherited bởi các tiến trình con trên os.fork().

Trên Windows, các bộ điều khiển và bộ mô tả tệp không thể kế thừa được đóng trong các tiến trình con, ngoại trừ các luồng tiêu chuẩn (các bộ mô tả tệp 0, 1 và 2: stdin, stdout và stderr), luôn được kế thừa. Bằng cách sử dụng các hàm spawn*, tất cả các thẻ điều khiển có thể kế thừa và tất cả các bộ mô tả tệp có thể kế thừa đều được kế thừa. Khi sử dụng mô-đun subprocess, tất cả các bộ mô tả tệp ngoại trừ các luồng tiêu chuẩn đều bị đóng và các thẻ điều khiển có thể kế thừa chỉ được kế thừa nếu tham số close_fdsFalse.

Trên nền tảng WebAssugging, không thể sửa đổi bộ mô tả tệp.

os.get_inheritable(fd, /)

Nhận cờ "có thể kế thừa" của bộ mô tả tệp đã chỉ định (boolean).

os.set_inheritable(fd, inheritable, /)

Đặt cờ "có thể kế thừa" của bộ mô tả tệp đã chỉ định.

os.get_handle_inheritable(handle, /)

Nhận cờ "có thể kế thừa" của tay cầm đã chỉ định (boolean).

sẵn có: Windows.

os.set_handle_inheritable(handle, inheritable, /)

Đặt cờ "có thể kế thừa" của tay cầm đã chỉ định.

sẵn có: Windows.

Tập tin và thư mục

Trên một số nền tảng Unix, nhiều chức năng trong số này hỗ trợ một hoặc nhiều tính năng sau:

  • specifying a file descriptor: Thông thường, đối số path được cung cấp cho các hàm trong mô-đun os phải là một chuỗi chỉ định đường dẫn tệp. Tuy nhiên, một số hàm hiện nay chấp nhận một bộ mô tả tệp đang mở cho đối số path của chúng. Sau đó, hàm sẽ hoạt động trên tệp được mô tả tham chiếu. Đối với các hệ thống POSIX, Python sẽ gọi biến thể của hàm có tiền tố f (ví dụ: gọi fchdir thay vì chdir).

    Bạn có thể kiểm tra xem path có thể được chỉ định làm bộ mô tả tệp cho một chức năng cụ thể trên nền tảng của bạn hay không bằng cách sử dụng os.supports_fd. Nếu chức năng này không khả dụng, việc sử dụng nó sẽ tạo ra NotImplementedError.

    Nếu hàm cũng hỗ trợ các đối số dir_fd hoặc follow_symlinks thì đó là lỗi khi chỉ định một trong các đối số đó khi cung cấp path làm bộ mô tả tệp.

  • paths relative to directory descriptors: Nếu dir_fd không phải là None, thì nó phải là một bộ mô tả tệp tham chiếu đến một thư mục và đường dẫn để thao tác phải tương đối; đường dẫn sau đó sẽ liên quan đến thư mục đó. Nếu đường dẫn là tuyệt đối, dir_fd sẽ bị bỏ qua. Đối với các hệ thống POSIX, Python sẽ gọi biến thể của hàm có hậu tố at và có thể có tiền tố là f (ví dụ: gọi faccessat thay vì access).

    Bạn có thể kiểm tra xem dir_fd có được hỗ trợ cho một chức năng cụ thể trên nền tảng của mình hay không bằng cách sử dụng os.supports_dir_fd. Nếu không có sẵn, việc sử dụng nó sẽ tạo ra NotImplementedError.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

Sử dụng uid/gid thực để kiểm tra quyền truy cập vào path. Lưu ý rằng hầu hết các thao tác sẽ sử dụng uid/gid hiệu quả, do đó, quy trình này có thể được sử dụng trong môi trường suid/sgid để kiểm tra xem người dùng đang gọi có quyền truy cập được chỉ định vào path hay không. mode phải là F_OK để kiểm tra sự tồn tại của path hoặc có thể bao gồm HOẶC của một hoặc nhiều R_OK, W_OKX_OK để kiểm tra quyền. Trả về True nếu quyền truy cập được cho phép, False nếu không. Xem trang Unix access(2) để biết thêm thông tin.

Chức năng này có thể hỗ trợ chỉ định paths relative to directory descriptorsnot following symlinks.

Nếu effective_idsTrue, access() sẽ thực hiện kiểm tra quyền truy cập bằng uid/gid hiệu quả thay vì uid/gid thực. effective_ids có thể không được hỗ trợ trên nền tảng của bạn; bạn có thể kiểm tra xem nó có khả dụng hay không bằng os.supports_effective_ids. Nếu không có sẵn, việc sử dụng nó sẽ tạo ra NotImplementedError.

Ghi chú

Sử dụng access() để kiểm tra xem người dùng có được ủy quyền hay không. mở tệp trước khi thực sự làm như vậy bằng cách sử dụng open() sẽ tạo ra lỗ hổng bảo mật vì người dùng có thể khai thác khoảng thời gian ngắn giữa việc kiểm tra và mở tệp để thao túng nó. Tốt nhất nên sử dụng các kỹ thuật EAFP. Ví dụ:

nếu os.access("myfile", os.R_OK):
    với open("myfile")  fp:
        trả về fp.read()
trả về "một số dữ liệu mặc định"

tốt hơn nên viết là:

thử:
    fp = open("myfile")
ngoại trừ PermissionError:
    trả về "một số dữ liệu mặc định"
khác:
    với fp:
        trả về fp.read()

Ghi chú

Các hoạt động I/O có thể thất bại ngay cả khi access() cho biết rằng chúng sẽ thành công, đặc biệt đối với các hoạt động trên hệ thống tệp mạng có thể có ngữ nghĩa về quyền ngoài mô hình bit quyền POSIX thông thường.

Thay đổi trong phiên bản 3.3: Đã thêm các tham số dir_fd, effective_idsfollow_symlinks.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.F_OK
os.R_OK
os.W_OK
os.X_OK

Các giá trị cần chuyển dưới dạng tham số mode của access() để kiểm tra sự tồn tại, khả năng đọc, khả năng ghi và khả năng thực thi của path tương ứng.

os.chdir(path)

Thay đổi thư mục làm việc hiện tại thành path.

Chức năng này có thể hỗ trợ specifying a file descriptor. Bộ mô tả phải tham chiếu đến thư mục đã mở chứ không phải tệp đang mở.

Hàm này có thể nâng cao OSError và các lớp con như FileNotFoundError, PermissionErrorNotADirectoryError.

Tăng một auditing event os.chdir với đối số path.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp trên một số nền tảng.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.chflags(path, flags, *, follow_symlinks=True)

Đặt cờ của path thành flags số. flags có thể kết hợp (bitwise OR) các giá trị sau (như được xác định trong mô-đun stat):

Chức năng này có thể hỗ trợ not following symlinks.

Tăng một auditing event os.chflags với các đối số path, flags.

sẵn có: Unix, not WASI.

Thay đổi trong phiên bản 3.3: Đã thêm tham số follow_symlinks.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

Thay đổi chế độ của path thành mode số. mode có thể nhận một trong các giá trị sau (như được xác định trong mô-đun stat) hoặc kết hợp ORed theo bit của chúng:

Chức năng này có thể hỗ trợ specifying a file descriptor, paths relative to directory descriptorsnot following symlinks.

Ghi chú

Mặc dù Windows hỗ trợ chmod() nhưng bạn chỉ có thể đặt cờ chỉ đọc của tệp với nó (thông qua các hằng số stat.S_IWRITEstat.S_IREAD hoặc một giá trị số nguyên tương ứng). Tất cả các bit khác đều bị bỏ qua. Giá trị mặc định của follow_symlinksFalse trên Windows.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Tăng một auditing event os.chmod với các đối số path, mode, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp đang mở cũng như các đối số dir_fdfollow_symlinks.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.13: Đã thêm hỗ trợ cho bộ mô tả tệp và đối số follow_symlinks trên Windows.

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

Thay đổi id chủ sở hữu và nhóm của path thành uidgid dạng số. Để giữ nguyên một trong các id, hãy đặt nó thành -1.

Chức năng này có thể hỗ trợ specifying a file descriptor, paths relative to directory descriptorsnot following symlinks.

Xem shutil.chown() để biết hàm cấp cao hơn chấp nhận tên ngoài id số.

Tăng một auditing event os.chown với các đối số path, uid, gid, dir_fd.

sẵn có: Unix.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp đang mở cũng như các đối số dir_fdfollow_symlinks.

Thay đổi trong phiên bản 3.6: Hỗ trợ path-like object.

os.chroot(path)

Thay đổi thư mục gốc của tiến trình hiện tại thành path.

sẵn có: Unix, not WASI, not Android.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.fchdir(fd)

Thay đổi thư mục làm việc hiện tại thành thư mục được đại diện bởi bộ mô tả tệp fd. Bộ mô tả phải tham chiếu đến thư mục đã mở chứ không phải tệp đang mở. Kể từ Python 3.3, điều này tương đương với os.chdir(fd).

Tăng một auditing event os.chdir với đối số path.

sẵn có: Unix.

os.getcwd()

Trả về một chuỗi đại diện cho thư mục làm việc hiện tại.

os.getcwdb()

Trả về một chuỗi byte đại diện cho thư mục làm việc hiện tại.

Thay đổi trong phiên bản 3.8: Hàm hiện sử dụng mã hóa UTF-8 trên Windows, thay vì trang mã ANSI: xem PEP 529 để biết lý do. Chức năng này không còn được dùng nữa trên Windows.

os.lchflags(path, flags)

Đặt cờ của path thành flags số, giống như chflags(), nhưng không theo các liên kết tượng trưng. Kể từ Python 3.3, điều này tương đương với os.chflags(path, flags, follow_symlinks=False).

Tăng một auditing event os.chflags với các đối số path, flags.

sẵn có: Unix, not WASI.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.lchmod(path, mode)

Thay đổi chế độ của path thành mode số. Nếu đường dẫn là một liên kết tượng trưng, ​​điều này sẽ ảnh hưởng đến liên kết tượng trưng hơn là mục tiêu. Xem tài liệu về chmod() để biết các giá trị có thể có của mode. Kể từ Python 3.3, điều này tương đương với os.chmod(path, mode, follow_symlinks=False).

lchmod() không phải là một phần của POSIX, nhưng việc triển khai Unix có thể có nó nếu việc thay đổi chế độ liên kết tượng trưng được hỗ trợ.

Tăng một auditing event os.chmod với các đối số path, mode, dir_fd.

sẵn có: Unix, Windows, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not OpenBSD

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.13: Đã thêm hỗ trợ trên Windows.

os.lchown(path, uid, gid)

Thay đổi id chủ sở hữu và nhóm của path thành uidgid dạng số. Chức năng này sẽ không theo các liên kết tượng trưng. Kể từ Python 3.3, điều này tương đương với os.chown(path, uid, gid, follow_symlinks=False).

Tăng một auditing event os.chown với các đối số path, uid, gid, dir_fd.

sẵn có: Unix.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Tạo một liên kết cứng trỏ đến src có tên dst.

Hàm này có thể hỗ trợ chỉ định src_dir_fd và/hoặc dst_dir_fd để cung cấp paths relative to directory descriptorsnot following symlinks. Giá trị mặc định của follow_symlinksFalse trên Windows.

Tăng một auditing event os.link với các đối số src, dst, src_dir_fd, dst_dir_fd.

sẵn có: Unix, Windows.

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ Windows.

Thay đổi trong phiên bản 3.3: Đã thêm các tham số src_dir_fd, dst_dir_fdfollow_symlinks.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho srcdst.

os.listdir(path='.')

Trả về danh sách chứa tên của các mục trong thư mục do path cung cấp. Danh sách này theo thứ tự tùy ý và không bao gồm các mục đặc biệt '.''..' ngay cả khi chúng có trong thư mục. Nếu một tệp bị xóa khỏi hoặc được thêm vào thư mục trong khi gọi hàm này, thì tên của tệp đó có được đưa vào hay không là không xác định.

path có thể là path-like object. Nếu path thuộc loại bytes (trực tiếp hoặc gián tiếp thông qua giao diện PathLike), tên tệp được trả về cũng sẽ thuộc loại bytes; trong mọi trường hợp khác, chúng sẽ thuộc loại str.

Chức năng này cũng có thể hỗ trợ specifying a file descriptor; bộ mô tả tập tin phải tham chiếu đến một thư mục.

Tăng một auditing event os.listdir với đối số path.

Ghi chú

Để mã hóa tên tệp str thành bytes, hãy sử dụng fsencode().

Xem thêm

Hàm scandir() trả về các mục thư mục cùng với thông tin thuộc tính tệp, mang lại hiệu suất tốt hơn cho nhiều trường hợp sử dụng phổ biến.

Thay đổi trong phiên bản 3.2: Tham số path trở thành tùy chọn.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp đang mở.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.listdrives()

Trả về danh sách chứa tên ổ đĩa trên hệ thống Windows.

Tên ổ đĩa thường có dạng 'C:\\'. Không phải tên ổ đĩa nào cũng được liên kết với một ổ đĩa và một số tên có thể không truy cập được vì nhiều lý do, bao gồm quyền, kết nối mạng hoặc phương tiện bị thiếu. Chức năng này không kiểm tra quyền truy cập.

Có thể tăng OSError nếu xảy ra lỗi khi thu thập tên ổ đĩa.

Tăng auditing event os.listdrives mà không có đối số.

sẵn có: Windows

Added in version 3.12.

os.listmounts(volume)

Trả về danh sách chứa các điểm gắn kết cho một ổ đĩa trên hệ thống Windows.

volume phải được biểu diễn dưới dạng đường dẫn GUID, giống như đường dẫn được trả về bởi os.listvolumes(). Các tập đĩa có thể được gắn vào nhiều vị trí hoặc không hề. Trong trường hợp sau, danh sách sẽ trống. Các điểm gắn kết không được liên kết với một ổ đĩa sẽ không được chức năng này trả về.

Các điểm gắn kết được hàm này trả về sẽ là đường dẫn tuyệt đối và có thể dài hơn tên ổ đĩa.

Tăng OSError nếu âm lượng không được nhận dạng hoặc nếu xảy ra lỗi khi thu thập đường dẫn.

Tăng một auditing event os.listmounts với đối số volume.

sẵn có: Windows

Added in version 3.12.

os.listvolumes()

Trả về danh sách chứa các tập trong hệ thống.

Các tập thường được biểu diễn dưới dạng đường dẫn GUID trông giống như \\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\. Các tập tin thường có thể được truy cập thông qua đường dẫn GUID, cho phép. Tuy nhiên, người dùng thường không quen với chúng và do đó, việc sử dụng chức năng này được khuyến nghị là truy xuất điểm gắn kết bằng os.listmounts().

Có thể tăng OSError nếu xảy ra lỗi khi thu thập tập.

Tăng auditing event os.listvolumes mà không có đối số.

sẵn có: Windows

Added in version 3.12.

os.lstat(path, *, dir_fd=None)

Thực hiện tương đương với lệnh gọi hệ thống lstat() trên đường dẫn đã cho. Tương tự như stat(), nhưng không theo liên kết tượng trưng. Trả về một đối tượng stat_result.

Trên các nền tảng không hỗ trợ liên kết tượng trưng, đây là bí danh của stat().

Kể từ Python 3.3, điều này tương đương với os.stat(path, dir_fd=dir_fd, follow_symlinks=False).

Chức năng này cũng có thể hỗ trợ paths relative to directory descriptors.

Xem thêm

Chức năng stat().

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ cho các liên kết tượng trưng của Windows 6.0 (Vista).

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.8: Trên Windows, giờ đây mở các điểm phân tích cú pháp đại diện cho một đường dẫn khác (tên thay thế), bao gồm các liên kết tượng trưng và các mối nối thư mục. Các loại điểm phân tích cú pháp khác được hệ điều hành giải quyết như đối với stat().

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

Tạo thư mục có tên path với chế độ số mode.

Nếu thư mục đã tồn tại, FileExistsError sẽ được nâng lên. Nếu thư mục mẹ trong đường dẫn không tồn tại, FileNotFoundError sẽ được nâng lên.

Trên một số hệ thống, mode bị bỏ qua. Khi nó được sử dụng, giá trị umask hiện tại trước tiên sẽ bị che đi. Nếu các bit không phải là 9 cuối cùng (tức là 3 chữ số cuối của biểu diễn bát phân của mode) được đặt thì ý nghĩa của chúng phụ thuộc vào nền tảng. Trên một số nền tảng, chúng bị bỏ qua và bạn nên gọi chmod() một cách rõ ràng để đặt chúng.

Trên Windows, mode của 0o700 được xử lý cụ thể để áp dụng kiểm soát truy cập vào thư mục mới sao cho chỉ người dùng hiện tại và quản trị viên mới có quyền truy cập. Các giá trị khác của mode bị bỏ qua.

Chức năng này cũng có thể hỗ trợ paths relative to directory descriptors.

Cũng có thể tạo các thư mục tạm thời; xem chức năng tempfile.mkdtemp() của mô-đun tempfile.

Tăng một auditing event os.mkdir với các đối số path, mode, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.13: Windows hiện xử lý mode của 0o700.

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

Chức năng tạo thư mục đệ quy. Giống như mkdir(), nhưng tạo tất cả các thư mục cấp trung gian cần thiết để chứa thư mục lá.

Tham số mode được chuyển tới mkdir() để tạo thư mục lá; xem the mkdir() description để biết cách diễn giải. Để đặt các bit cấp phép tệp của bất kỳ thư mục mẹ mới được tạo nào, bạn có thể đặt ô trước khi gọi makedirs(). Các bit quyền của tệp của thư mục mẹ hiện có không bị thay đổi.

Nếu exist_okFalse (mặc định), FileExistsError sẽ được nâng lên nếu thư mục đích đã tồn tại.

Ghi chú

makedirs() sẽ bị nhầm lẫn nếu các thành phần đường dẫn cần tạo bao gồm pardir (ví dụ: ".." trên hệ thống UNIX).

Hàm này xử lý chính xác các đường dẫn UNC.

Tăng một auditing event os.mkdir với các đối số path, mode, dir_fd.

Thay đổi trong phiên bản 3.2: Đã thêm tham số exist_ok.

Thay đổi trong phiên bản 3.4.1: Trước Python 3.4.1, nếu exist_okTrue và thư mục đã tồn tại, makedirs() vẫn sẽ báo lỗi nếu mode không khớp với chế độ của thư mục hiện có. Vì hành vi này không thể triển khai một cách an toàn nên nó đã bị xóa trong Python 3.4.1. Xem bpo-21082.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.7: Đối số mode không còn ảnh hưởng đến các bit cấp phép tệp của các thư mục cấp trung gian mới được tạo.

os.mkfifo(path, mode=0o666, *, dir_fd=None)

Tạo một FIFO (một ống có tên) có tên path với chế độ số mode. Giá trị umask hiện tại trước tiên được ẩn khỏi chế độ.

Chức năng này cũng có thể hỗ trợ paths relative to directory descriptors.

FIFO là các đường ống có thể được truy cập như các tệp thông thường. FIFO tồn tại cho đến khi chúng bị xóa (ví dụ với os.unlink()). Nói chung, FIFO được sử dụng làm điểm hẹn giữa các quy trình loại "máy khách" và "máy chủ": máy chủ mở FIFO để đọc và máy khách mở nó để ghi. Lưu ý rằng mkfifo() không mở FIFO --- nó chỉ tạo điểm hẹn.

sẵn có: Unix, not WASI.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

Tạo nút hệ thống tệp (tệp, tệp đặc biệt của thiết bị hoặc ống có tên) có tên path. mode chỉ định cả quyền sử dụng và loại nút được tạo, được kết hợp (bitwise OR) với một trong các stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLKstat.S_IFIFO (các hằng số đó có sẵn trong stat). Đối với stat.S_IFCHRstat.S_IFBLK, device xác định tệp đặc biệt của thiết bị mới được tạo (có thể sử dụng os.makedev()), nếu không thì nó sẽ bị bỏ qua.

Chức năng này cũng có thể hỗ trợ paths relative to directory descriptors.

sẵn có: Unix, not WASI.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.major(device, /)

Trích xuất số chính của thiết bị từ số thiết bị thô (thường là trường st_dev hoặc st_rdev từ stat).

os.minor(device, /)

Trích xuất số phụ của thiết bị từ số thiết bị thô (thường là trường st_dev hoặc st_rdev từ stat).

os.makedev(major, minor, /)

Soạn số thiết bị thô từ số thiết bị chính và phụ.

os.pathconf(path, name)

Trả về thông tin cấu hình hệ thống liên quan đến tệp được đặt tên. name chỉ định giá trị cấu hình cần truy xuất; nó có thể là một chuỗi là tên của một giá trị hệ thống được xác định; những tên này được chỉ định trong một số tiêu chuẩn (POSIX.1, Unix 95, Unix 98 và các tiêu chuẩn khác). Một số nền tảng cũng xác định tên bổ sung. Tên của hệ điều hành máy chủ được đưa ra trong từ điển pathconf_names. Đối với các biến cấu hình không có trong ánh xạ đó, việc chuyển số nguyên cho name cũng được chấp nhận.

Nếu name là một chuỗi và không được biết đến, ValueError sẽ được nâng lên. Nếu một giá trị cụ thể cho name không được hệ thống máy chủ hỗ trợ, ngay cả khi nó được bao gồm trong pathconf_names, thì OSError sẽ được đưa ra cùng với errno.EINVAL cho số lỗi.

Chức năng này có thể hỗ trợ specifying a file descriptor.

sẵn có: Unix.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.pathconf_names

Tên ánh xạ từ điển được pathconf()fpathconf() chấp nhận thành các giá trị nguyên được xác định cho các tên đó bởi hệ điều hành máy chủ. Điều này có thể được sử dụng để xác định tập hợp các tên được hệ thống biết đến.

sẵn có: Unix.

Trả về một chuỗi biểu thị đường dẫn mà liên kết tượng trưng trỏ tới. Kết quả có thể là tên đường dẫn tuyệt đối hoặc tương đối; nếu nó là tương đối, nó có thể được chuyển đổi thành tên đường dẫn tuyệt đối bằng os.path.join(os.path.dirname(path), result).

Nếu path là một đối tượng chuỗi (trực tiếp hoặc gián tiếp thông qua giao diện PathLike), thì kết quả cũng sẽ là một đối tượng chuỗi và lệnh gọi có thể gây ra lỗi UnicodeDecodeError. Nếu path là đối tượng bytes (trực tiếp hoặc gián tiếp), kết quả sẽ là đối tượng bytes.

Chức năng này cũng có thể hỗ trợ paths relative to directory descriptors.

Khi cố gắng giải quyết một đường dẫn có thể chứa các liên kết, hãy sử dụng realpath() để xử lý chính xác sự khác biệt về đệ quy và nền tảng.

sẵn có: Unix, Windows.

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ cho các liên kết tượng trưng của Windows 6.0 (Vista).

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object trên Unix.

Thay đổi trong phiên bản 3.8: Chấp nhận đối tượng path-like object và bytes trên Windows.

Đã thêm hỗ trợ cho các mối nối thư mục và thay đổi để trả về đường dẫn thay thế (thường bao gồm tiền tố \\?\) thay vì trường "tên in" tùy chọn đã được trả về trước đó.

os.remove(path, *, dir_fd=None)

Loại bỏ (xóa) file path. Nếu path là một thư mục thì OSError sẽ được nâng lên. Sử dụng rmdir() để xóa thư mục. Nếu tệp không tồn tại, FileNotFoundError sẽ xuất hiện.

Chức năng này có thể hỗ trợ paths relative to directory descriptors.

Trên Windows, việc cố gắng xóa một tệp đang được sử dụng sẽ gây ra ngoại lệ; trên Unix, mục nhập thư mục bị xóa nhưng bộ nhớ được phân bổ cho tệp không còn khả dụng cho đến khi tệp gốc không còn được sử dụng.

Hàm này giống hệt về mặt ngữ nghĩa với unlink().

Tăng một auditing event os.remove với các đối số path, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.removedirs(name)

Loại bỏ các thư mục theo cách đệ quy. Hoạt động giống như rmdir() ngoại trừ việc, nếu thư mục lá được xóa thành công, removedirs() sẽ cố gắng xóa liên tiếp mọi thư mục mẹ được đề cập trong path cho đến khi xảy ra lỗi (lỗi này bị bỏ qua vì thường có nghĩa là thư mục mẹ không trống). Ví dụ: os.removedirs('foo/bar/baz') trước tiên sẽ xóa thư mục 'foo/bar/baz', sau đó xóa 'foo/bar''foo' nếu chúng trống. Tăng OSError nếu thư mục lá không thể xóa thành công.

Tăng một auditing event os.remove với các đối số path, dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Đổi tên tệp hoặc thư mục src thành dst. Nếu dst tồn tại, thao tác sẽ thất bại với lớp con OSError trong một số trường hợp:

Trên Windows, nếu dst tồn tại thì FileExistsError luôn được nâng lên. Thao tác có thể thất bại nếu srcdst nằm trên các hệ thống tệp khác nhau. Sử dụng shutil.move() để hỗ trợ di chuyển sang hệ thống tệp khác.

Trên Unix, nếu src là một tệp và dst là một thư mục hoặc ngược lại, IsADirectoryError hoặc NotADirectoryError sẽ được nâng lên tương ứng. Nếu cả hai đều là thư mục và dst trống, dst sẽ được thay thế âm thầm. Nếu dst là một thư mục không trống thì OSError sẽ được nâng lên. Nếu cả hai đều là tệp, dst sẽ được thay thế âm thầm nếu người dùng có quyền. Hoạt động có thể không thành công trên một số phiên bản Unix nếu srcdst nằm trên các hệ thống tệp khác nhau. Nếu thành công, việc đổi tên sẽ là một thao tác nguyên tử (đây là yêu cầu POSIX).

Hàm này có thể hỗ trợ chỉ định src_dir_fd và/hoặc dst_dir_fd để cung cấp paths relative to directory descriptors.

Nếu bạn muốn ghi đè đích đến trên nhiều nền tảng, hãy sử dụng replace().

Tăng một auditing event os.rename với các đối số src, dst, src_dir_fd, dst_dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm thông số src_dir_fddst_dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho srcdst.

os.renames(old, new)

Chức năng đổi tên thư mục hoặc tập tin đệ quy. Hoạt động giống như rename(), ngoại trừ việc tạo bất kỳ thư mục trung gian nào cần thiết để làm cho tên đường dẫn mới trở nên tốt trước tiên. Sau khi đổi tên, các thư mục tương ứng với các đoạn đường dẫn ngoài cùng bên phải của tên cũ sẽ bị loại bỏ bằng removedirs().

Ghi chú

Chức năng này có thể thất bại với cấu trúc thư mục mới được tạo nếu bạn thiếu các quyền cần thiết để xóa thư mục hoặc tệp lá.

Tăng một auditing event os.rename với các đối số src, dst, src_dir_fd, dst_dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho oldnew.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Đổi tên tệp hoặc thư mục src thành dst. Nếu dst là một thư mục không trống, OSError sẽ được nâng lên. Nếu dst tồn tại và là một tệp, nó sẽ được thay thế một cách âm thầm nếu người dùng có quyền. Thao tác có thể thất bại nếu srcdst nằm trên các hệ thống tệp khác nhau. Nếu thành công, việc đổi tên sẽ là một thao tác đơn giản (đây là yêu cầu của POSIX).

Hàm này có thể hỗ trợ chỉ định src_dir_fd và/hoặc dst_dir_fd để cung cấp paths relative to directory descriptors.

Tăng một auditing event os.rename với các đối số src, dst, src_dir_fd, dst_dir_fd.

Added in version 3.3.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho srcdst.

os.rmdir(path, *, dir_fd=None)

Loại bỏ (xóa) thư mục path. Nếu thư mục không tồn tại hoặc không trống, FileNotFoundError hoặc OSError sẽ được nâng lên tương ứng. Để xóa toàn bộ cây thư mục, có thể sử dụng shutil.rmtree().

Chức năng này có thể hỗ trợ paths relative to directory descriptors.

Tăng một auditing event os.rmdir với các đối số path, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.scandir(path='.')

Trả về một iterator của các đối tượng os.DirEntry tương ứng với các mục trong thư mục do path cung cấp. Các mục được đưa ra theo thứ tự tùy ý và không bao gồm các mục đặc biệt '.''..'. Nếu một tệp bị xóa khỏi hoặc được thêm vào thư mục sau khi tạo trình vòng lặp, thì việc đưa vào mục nhập cho tệp đó có được xác định hay không.

Sử dụng scandir() thay vì listdir() có thể tăng đáng kể hiệu suất của mã cũng cần thông tin về loại tệp hoặc thuộc tính tệp, vì các đối tượng os.DirEntry hiển thị thông tin này nếu hệ điều hành cung cấp nó khi quét một thư mục. Tất cả các phương thức os.DirEntry có thể thực hiện lệnh gọi hệ thống, nhưng is_dir()is_file() thường chỉ yêu cầu lệnh gọi hệ thống cho các liên kết tượng trưng; os.DirEntry.stat() luôn yêu cầu lệnh gọi hệ thống trên Unix nhưng chỉ yêu cầu một lệnh gọi cho các liên kết tượng trưng trên Windows.

path có thể là path-like object. Nếu path thuộc loại bytes (trực tiếp hoặc gián tiếp thông qua giao diện PathLike), loại thuộc tính namepath của mỗi os.DirEntry sẽ là bytes; trong mọi trường hợp khác, chúng sẽ thuộc loại str.

Chức năng này cũng có thể hỗ trợ specifying a file descriptor; bộ mô tả tập tin phải tham chiếu đến một thư mục.

Tăng một auditing event os.scandir với đối số path.

Trình lặp scandir() hỗ trợ giao thức context manager và có phương thức sau:

scandir.close()

Đóng trình vòng lặp và giải phóng tài nguyên có được.

Điều này được gọi tự động khi trình vòng lặp hết hoặc được thu thập rác hoặc khi xảy ra lỗi trong quá trình lặp. Tuy nhiên, nên gọi nó một cách rõ ràng hoặc sử dụng câu lệnh with.

Added in version 3.6.

Ví dụ sau đây cho thấy cách sử dụng đơn giản scandir() để hiển thị tất cả các tệp (không bao gồm các thư mục) trong path nhất định không bắt đầu bằng '.'. Cuộc gọi entry.is_file() thường sẽ không thực hiện cuộc gọi hệ thống bổ sung:

với os.scandir(path) :
    để vào trong đó:
        nếu không phải  entry.name.startswith('.')  entry.is_file():
            in(entry.name)

Ghi chú

Trên các hệ thống dựa trên Unix, scandir() sử dụng các chức năng opendir()readdir() của hệ thống. Trên Windows, nó sử dụng chức năng Win32 FindFirstFileWFindNextFileW.

Added in version 3.5.

Thay đổi trong phiên bản 3.6: Đã thêm hỗ trợ cho giao thức context manager và phương thức close(). Nếu trình vòng lặp scandir() chưa hết hoặc chưa được đóng rõ ràng thì ResourceWarning sẽ được phát ra trong hàm hủy của nó.

Hàm này chấp nhận path-like object.

Thay đổi trong phiên bản 3.7: Đã thêm hỗ trợ cho file descriptors trên Unix.

class os.DirEntry

Đối tượng do scandir() mang lại để hiển thị đường dẫn tệp và các thuộc tính tệp khác của một mục nhập thư mục.

scandir() sẽ cung cấp nhiều thông tin này nhất có thể mà không cần thực hiện các lệnh gọi hệ thống bổ sung. Khi lệnh gọi hệ thống stat() hoặc lstat() được thực hiện, đối tượng os.DirEntry sẽ lưu kết quả vào bộ đệm.

Các phiên bản os.DirEntry không nhằm mục đích lưu trữ trong cấu trúc dữ liệu tồn tại lâu dài; nếu bạn biết siêu dữ liệu của tệp đã thay đổi hoặc nếu đã trôi qua một thời gian dài kể từ khi gọi scandir(), hãy gọi os.stat(entry.path) để tìm nạp thông tin cập nhật.

Vì các phương thức os.DirEntry có thể thực hiện lệnh gọi hệ điều hành nên chúng cũng có thể tăng OSError. Nếu bạn cần kiểm soát lỗi một cách chi tiết, bạn có thể bắt gặp OSError khi gọi một trong các phương thức os.DirEntry và xử lý nếu thích hợp.

Để có thể sử dụng trực tiếp dưới dạng path-like object, os.DirEntry triển khai giao diện PathLike.

Các thuộc tính và phương thức trên phiên bản os.DirEntry như sau:

name

Tên tệp cơ sở của mục nhập, liên quan đến đối số scandir() path.

Thuộc tính name sẽ là bytes nếu đối số scandir() path thuộc loại bytesstr nếu ngược lại. Sử dụng fsdecode() để giải mã tên tệp byte.

path

Tên đường dẫn đầy đủ của mục nhập: tương đương với os.path.join(scandir_path, entry.name) trong đó scandir_path là đối số scandir() path. Đường dẫn chỉ tuyệt đối nếu đối số scandir() path là tuyệt đối. Nếu đối số scandir() pathfile descriptor thì thuộc tính path giống với thuộc tính name.

Thuộc tính path sẽ là bytes nếu đối số scandir() path thuộc loại bytesstr nếu ngược lại. Sử dụng fsdecode() để giải mã tên tệp byte.

inode()

Trả về số inode của mục nhập.

Kết quả được lưu trữ trên đối tượng os.DirEntry. Sử dụng os.stat(entry.path, follow_symlinks=False).st_ino để lấy thông tin cập nhật.

Trong cuộc gọi đầu tiên, không được lưu trong bộ nhớ đệm, cuộc gọi hệ thống được yêu cầu trên Windows nhưng không phải trên Unix.

is_dir(*, follow_symlinks=True)

Trả về True nếu mục này là một thư mục hoặc một liên kết tượng trưng trỏ đến một thư mục; trả về False nếu mục nhập đó là hoặc trỏ đến bất kỳ loại tệp nào khác hoặc nếu nó không tồn tại nữa.

Nếu follow_symlinksFalse, chỉ trả về True nếu mục này là một thư mục (không đi theo các liên kết tượng trưng); trả về False nếu mục nhập là bất kỳ loại tệp nào khác hoặc nếu nó không tồn tại nữa.

Kết quả được lưu vào bộ đệm trên đối tượng os.DirEntry, với bộ đệm riêng cho follow_symlinks TrueFalse. Gọi os.stat() cùng với stat.S_ISDIR() để lấy thông tin cập nhật.

Trong cuộc gọi đầu tiên, không được lưu trong bộ nhớ đệm, trong hầu hết các trường hợp, không cần phải có cuộc gọi hệ thống. Cụ thể, đối với các liên kết không phải tượng trưng, ​​cả Windows hoặc Unix đều không yêu cầu lệnh gọi hệ thống, ngoại trừ trên một số hệ thống tệp Unix nhất định, chẳng hạn như hệ thống tệp mạng, trả về dirent.d_type == DT_UNKNOWN. Nếu mục nhập là một liên kết tượng trưng, ​​​​một cuộc gọi hệ thống sẽ được yêu cầu đi theo liên kết tượng trưng trừ khi follow_symlinksFalse.

Phương pháp này có thể tăng OSError, chẳng hạn như PermissionError, nhưng FileNotFoundError bị bắt và không được nâng lên.

is_file(*, follow_symlinks=True)

Trả về True nếu mục nhập này là một tệp hoặc một liên kết tượng trưng trỏ đến một tệp; trả về False nếu mục nhập đó là hoặc trỏ đến một thư mục hoặc mục nhập không phải tệp khác hoặc nếu nó không tồn tại nữa.

Nếu follow_symlinksFalse, chỉ trả về True nếu mục nhập này là một tệp (không đi theo các liên kết tượng trưng); trả về False nếu mục nhập là một thư mục hoặc mục nhập không phải tệp khác hoặc nếu nó không tồn tại nữa.

Kết quả được lưu trữ trên đối tượng os.DirEntry. Bộ nhớ đệm, lệnh gọi hệ thống được thực hiện và các trường hợp ngoại lệ được đưa ra đều theo is_dir().

Trả về True nếu mục này là một liên kết tượng trưng (ngay cả khi bị hỏng); trả về False nếu mục nhập trỏ đến một thư mục hoặc bất kỳ loại tệp nào hoặc nếu nó không tồn tại nữa.

Kết quả được lưu trữ trên đối tượng os.DirEntry. Gọi os.path.islink() để lấy thông tin cập nhật.

Trong cuộc gọi đầu tiên, không được lưu trong bộ nhớ đệm, trong hầu hết các trường hợp, không cần có cuộc gọi hệ thống. Cụ thể, cả Windows và Unix đều không yêu cầu lệnh gọi hệ thống, ngoại trừ trên một số hệ thống tệp Unix nhất định, chẳng hạn như hệ thống tệp mạng, trả về dirent.d_type == DT_UNKNOWN.

Phương pháp này có thể tăng OSError, chẳng hạn như PermissionError, nhưng FileNotFoundError bị bắt và không được nâng lên.

is_junction()

Trả về True nếu mục này là một điểm nối (ngay cả khi bị hỏng); trả về False nếu mục nhập trỏ đến một thư mục thông thường, bất kỳ loại tệp nào, liên kết tượng trưng hoặc nếu nó không tồn tại nữa.

Kết quả được lưu trữ trên đối tượng os.DirEntry. Gọi os.path.isjunction() để lấy thông tin cập nhật.

Added in version 3.12.

stat(*, follow_symlinks=True)

Trả về đối tượng stat_result cho mục này. Phương thức này theo các liên kết tượng trưng theo mặc định; để chỉ định một liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False.

Trên Unix, phương pháp này luôn yêu cầu lệnh gọi hệ thống. Trên Windows, nó chỉ yêu cầu lệnh gọi hệ thống nếu follow_symlinksTrue và mục nhập là điểm phân tích lại (ví dụ: liên kết tượng trưng hoặc đường nối thư mục).

Trên Windows, các thuộc tính st_ino, st_devst_nlink của stat_result luôn được đặt thành 0. Gọi os.stat() để nhận các thuộc tính này.

Kết quả được lưu vào bộ đệm trên đối tượng os.DirEntry, với bộ đệm riêng cho follow_symlinks TrueFalse. Gọi os.stat() để lấy thông tin cập nhật.

Lưu ý rằng có sự tương ứng tốt giữa một số thuộc tính và phương thức của os.DirEntrypathlib.Path. Đặc biệt, thuộc tính name có ý nghĩa tương tự, cũng như các phương thức is_dir(), is_file(), is_symlink(), is_junction()stat().

Added in version 3.5.

Thay đổi trong phiên bản 3.6: Đã thêm hỗ trợ cho giao diện PathLike. Đã thêm hỗ trợ cho đường dẫn bytes trên Windows.

Thay đổi trong phiên bản 3.12: Thuộc tính st_ctime của kết quả thống kê không được dùng nữa trên Windows. Thời gian tạo tệp có sẵn chính xác là st_birthtime và trong tương lai st_ctime có thể được thay đổi để trả về 0 hoặc thời gian thay đổi siêu dữ liệu, nếu có.

os.stat(path, *, dir_fd=None, follow_symlinks=True)

Nhận trạng thái của một tập tin hoặc một bộ mô tả tập tin. Thực hiện tương đương với lệnh gọi hệ thống stat() trên đường dẫn đã cho. path có thể được chỉ định dưới dạng chuỗi hoặc byte -- trực tiếp hoặc gián tiếp thông qua giao diện PathLike -- hoặc dưới dạng bộ mô tả tệp mở. Trả về một đối tượng stat_result.

Hàm này thường đi theo các liên kết tượng trưng; để chỉ định một liên kết tượng trưng, ​​hãy thêm đối số follow_symlinks=False hoặc sử dụng lstat().

Chức năng này có thể hỗ trợ specifying a file descriptornot following symlinks.

Trên Windows, việc chuyển follow_symlinks=False sẽ vô hiệu hóa việc theo dõi tất cả các điểm phân tích cú pháp thay thế tên, bao gồm các liên kết tượng trưng và các mối nối thư mục. Các loại điểm phân tích lại khác không giống với liên kết hoặc hệ điều hành không thể theo dõi sẽ được mở trực tiếp. Khi đi theo một chuỗi gồm nhiều liên kết, điều này có thể dẫn đến việc liên kết ban đầu được trả về thay vì liên kết không phải liên kết đã ngăn chặn việc truyền tải hoàn toàn. Để có được kết quả thống kê cho đường dẫn cuối cùng trong trường hợp này, hãy sử dụng hàm os.path.realpath() để phân giải tên đường dẫn nhiều nhất có thể và gọi lstat() theo kết quả. Điều này không áp dụng cho các liên kết tượng trưng hoặc điểm nối lơ lửng, điều này sẽ gây ra các ngoại lệ thông thường.

Ví dụ:

>>> nhập hệ điều hành
>>> statininfo = os.stat('somefile.txt')
>>> thông tin statin
os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
st_mtime=1297230027, st_ctime=1297230027)
>>> statininfo.st_size
264

Xem thêm

chức năng fstat()lstat().

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fdfollow_symlinks, chỉ định bộ mô tả tệp thay vì đường dẫn.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.8: Trên Windows, tất cả các điểm phân tích cú pháp mà hệ điều hành có thể giải quyết hiện đã được tuân theo và việc chuyển follow_symlinks=False sẽ vô hiệu hóa việc theo dõi tất cả các điểm phân tích lại thay thế tên. Nếu hệ điều hành đạt đến điểm phân tích lại mà nó không thể theo kịp, stat hiện trả về thông tin cho đường dẫn ban đầu như thể follow_symlinks=False đã được chỉ định thay vì đưa ra lỗi.

class os.stat_result

Đối tượng có thuộc tính tương ứng với các thành viên của cấu trúc stat. Nó được sử dụng cho kết quả của os.stat(), os.fstat()os.lstat().

Thuộc tính:

st_mode

Chế độ tệp: loại tệp và bit chế độ tệp (quyền).

st_ino

Phụ thuộc vào nền tảng, nhưng nếu khác 0, sẽ xác định duy nhất tệp cho giá trị nhất định là st_dev. Thông thường:

st_dev

Mã định danh của thiết bị chứa tệp này.

Số lượng liên kết cứng

st_uid

Định danh người dùng của chủ sở hữu tập tin.

st_gid

Mã định danh nhóm của chủ sở hữu tập tin.

st_size

Kích thước của tệp tính bằng byte, nếu đó là tệp thông thường hoặc liên kết tượng trưng. Kích thước của một liên kết tượng trưng là độ dài của tên đường dẫn mà nó chứa, không có byte rỗng cuối cùng.

Dấu thời gian:

st_atime

Thời gian truy cập gần đây nhất được tính bằng giây.

st_mtime

Thời gian sửa đổi nội dung gần đây nhất được biểu thị bằng giây.

st_ctime

Thời gian thay đổi siêu dữ liệu gần đây nhất được biểu thị bằng giây.

Thay đổi trong phiên bản 3.12: st_ctime không được dùng nữa trên Windows. Sử dụng st_birthtime cho thời gian tạo tập tin. Trong tương lai, st_ctime sẽ chứa thời gian thay đổi siêu dữ liệu gần đây nhất, giống như đối với các nền tảng khác.

st_atime_ns

Thời gian truy cập gần đây nhất được biểu thị bằng nano giây dưới dạng số nguyên.

Added in version 3.3.

st_mtime_ns

Thời gian sửa đổi nội dung gần đây nhất được biểu thị bằng nano giây dưới dạng số nguyên.

Added in version 3.3.

st_ctime_ns

Thời gian thay đổi siêu dữ liệu gần đây nhất được biểu thị bằng nano giây dưới dạng số nguyên.

Added in version 3.3.

Thay đổi trong phiên bản 3.12: st_ctime_ns không được dùng nữa trên Windows. Sử dụng st_birthtime_ns cho thời gian tạo tập tin. Trong tương lai, st_ctime sẽ chứa thời gian thay đổi siêu dữ liệu gần đây nhất, cũng như đối với các nền tảng khác.

st_birthtime

Thời gian tạo tập tin tính bằng giây. Thuộc tính này không phải lúc nào cũng có sẵn và có thể tăng AttributeError.

Thay đổi trong phiên bản 3.12: st_birthtime hiện có sẵn trên Windows.

st_birthtime_ns

Thời gian tạo tệp được biểu thị bằng nano giây dưới dạng số nguyên. Thuộc tính này không phải lúc nào cũng có sẵn và có thể tăng AttributeError.

Added in version 3.12.

Ghi chú

Ý nghĩa và độ phân giải chính xác của các thuộc tính st_atime, st_mtime, st_ctimest_birthtime phụ thuộc vào hệ điều hành và hệ thống tệp. Ví dụ: trên hệ thống Windows sử dụng hệ thống tệp FAT32, st_mtime có độ phân giải 2 giây và st_atime chỉ có độ phân giải 1 ngày. Xem tài liệu hệ điều hành của bạn để biết chi tiết.

Tương tự, mặc dù st_atime_ns, st_mtime_ns, st_ctime_nsst_birthtime_ns luôn được biểu thị bằng nano giây nhưng nhiều hệ thống không cung cấp độ chính xác nano giây. Trên các hệ thống cung cấp độ chính xác nano giây, đối tượng dấu phẩy động được sử dụng để lưu trữ st_atime, st_mtime, st_ctimest_birthtime không thể bảo toàn tất cả và do đó sẽ hơi không chính xác. Nếu bạn cần dấu thời gian chính xác, bạn nên luôn sử dụng st_atime_ns, st_mtime_ns, st_ctime_nsst_birthtime_ns.

Trên một số hệ thống Unix (chẳng hạn như Linux), các thuộc tính sau cũng có thể có sẵn:

st_blocks

Số khối 512 byte được phân bổ cho tệp. Giá trị này có thể nhỏ hơn st_size/512 khi tệp có lỗ hổng.

st_blksize

Kích thước khối "ưu tiên" cho I/O hệ thống tệp hiệu quả. Việc ghi vào một tệp theo từng đoạn nhỏ hơn có thể gây ra việc đọc-sửa-viết lại không hiệu quả.

st_rdev

Loại thiết bị nếu là thiết bị inode.

st_flags

Cờ do người dùng xác định cho tệp.

Trên các hệ thống Unix khác (chẳng hạn như FreeBSD), các thuộc tính sau có thể có sẵn (nhưng có thể chỉ được điền nếu root cố gắng sử dụng chúng):

st_gen

Số tạo tập tin.

Trên Solaris và các sản phẩm phái sinh, các thuộc tính sau cũng có thể có sẵn:

st_fstype

Chuỗi xác định duy nhất loại hệ thống tệp chứa tệp.

Trên hệ thống macOS, các thuộc tính sau cũng có thể có sẵn:

st_rsize

Kích thước thực của tập tin.

st_creator

Người tạo tập tin.

st_type

Loại tập tin.

Trên hệ thống Windows, các thuộc tính sau cũng có sẵn:

st_file_attributes

Thuộc tính tệp Windows: thành viên dwFileAttributes của cấu trúc BY_HANDLE_FILE_INFORMATION được trả về bởi GetFileInformationByHandle(). Xem hằng số FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE> trong mô-đun stat.

Added in version 3.5.

st_reparse_tag

Khi st_file_attributes được đặt FILE_ATTRIBUTE_REPARSE_POINT, trường này chứa thẻ xác định loại điểm phân tích lại. Xem hằng số IO_REPARSE_TAG_* trong mô-đun stat.

Mô-đun tiêu chuẩn stat xác định các hàm và hằng số hữu ích để trích xuất thông tin từ cấu trúc stat. (Trên Windows, một số mục chứa đầy giá trị giả.)

Để tương thích ngược, phiên bản stat_result cũng có thể truy cập được dưới dạng một bộ gồm ít nhất 10 số nguyên cung cấp các thành viên quan trọng nhất (và di động) của cấu trúc stat, theo thứ tự st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. Nhiều mục khác có thể được thêm vào cuối bằng một số triển khai. Để tương thích với các phiên bản Python cũ hơn, việc truy cập stat_result dưới dạng bộ dữ liệu luôn trả về số nguyên.

Thay đổi trong phiên bản 3.5: Windows hiện trả về chỉ mục tệp là st_ino khi có sẵn.

Thay đổi trong phiên bản 3.7: Đã thêm thành viên st_fstype vào Solaris/các sản phẩm phái sinh.

Thay đổi trong phiên bản 3.8: Đã thêm thành viên st_reparse_tag trên Windows.

Thay đổi trong phiên bản 3.8: Trên Windows, thành viên st_mode hiện xác định các tệp đặc biệt là S_IFCHR, S_IFIFO hoặc S_IFBLK nếu thích hợp.

Thay đổi trong phiên bản 3.12: Trên Windows, st_ctime không được dùng nữa. Cuối cùng, nó sẽ chứa thời gian thay đổi siêu dữ liệu cuối cùng, để thống nhất với các nền tảng khác, nhưng hiện tại vẫn chứa thời gian tạo. Sử dụng st_birthtime cho thời gian tạo.

Trên Windows, st_ino hiện có thể lên tới 128 bit, tùy thuộc vào hệ thống tệp. Trước đây nó sẽ không vượt quá 64 bit và các mã định danh tệp lớn hơn sẽ được đóng gói tùy ý.

Trên Windows, st_rdev không còn trả về giá trị nữa. Trước đây nó sẽ chứa nội dung giống như st_dev, điều này không chính xác.

Đã thêm thành viên st_birthtime trên Windows.

os.statvfs(path)

Thực hiện lệnh gọi hệ thống statvfs() trên đường dẫn đã cho. Giá trị trả về là một đối tượng có các thuộc tính mô tả hệ thống tệp trên đường dẫn đã cho và tương ứng với các thành viên của cấu trúc statvfs, cụ thể là: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax, f_fsid.

Hai hằng số cấp mô-đun được xác định cho cờ bit của thuộc tính f_flag: nếu ST_RDONLY được đặt, hệ thống tệp sẽ được gắn ở chế độ chỉ đọc và nếu ST_NOSUID được đặt, ngữ nghĩa của các bit setuid/setgid sẽ bị vô hiệu hóa hoặc không được hỗ trợ.

Các hằng số cấp mô-đun bổ sung được xác định cho các hệ thống dựa trên GNU/glibc. Đó là ST_NODEV (không cho phép truy cập vào các tệp đặc biệt của thiết bị), ST_NOEXEC (không cho phép thực thi chương trình), ST_SYNCHRONOUS (ghi được đồng bộ hóa cùng một lúc), ST_MANDLOCK (cho phép khóa bắt buộc trên FS), ST_WRITE (ghi trên tệp/thư mục/liên kết tượng trưng), ST_APPEND (tệp chỉ nối thêm), ST_IMMUTABLE (tệp bất biến), ST_NOATIME (không cập nhật thời gian truy cập), ST_NODIRATIME (không cập nhật thời gian truy cập thư mục), ST_RELATIME (cập nhật thời gian liên quan đến mtime/ctime).

Chức năng này có thể hỗ trợ specifying a file descriptor.

sẵn có: Unix.

Thay đổi trong phiên bản 3.2: Các hằng số ST_RDONLYST_NOSUID đã được thêm vào.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp đang mở.

Thay đổi trong phiên bản 3.4: Các hằng số ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS, ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME, ST_NODIRATIMEST_RELATIME đã được thêm vào.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.7: Đã thêm thuộc tính f_fsid.

os.supports_dir_fd

Đối tượng set cho biết chức năng nào trong mô-đun os chấp nhận bộ mô tả tệp mở cho tham số dir_fd của chúng. Các nền tảng khác nhau cung cấp các tính năng khác nhau và chức năng cơ bản mà Python sử dụng để triển khai tham số dir_fd không có sẵn trên tất cả các nền tảng mà Python hỗ trợ. Để đảm bảo tính nhất quán, các hàm có thể hỗ trợ dir_fd luôn cho phép chỉ định tham số nhưng sẽ đưa ra một ngoại lệ nếu chức năng này được sử dụng khi nó không có sẵn ở địa phương. (Chỉ định None cho dir_fd luôn được hỗ trợ trên tất cả các nền tảng.)

Để kiểm tra xem một hàm cụ thể có chấp nhận bộ mô tả tệp đang mở cho tham số dir_fd của nó hay không, hãy sử dụng toán tử in trên supports_dir_fd. Ví dụ: biểu thức này đánh giá là True nếu os.stat() chấp nhận bộ mô tả tệp mở cho dir_fd trên nền tảng cục bộ:

os.stat trong os.supports_dir_fd

Hiện tại các thông số dir_fd chỉ hoạt động trên nền tảng Unix; không cái nào trong số chúng hoạt động trên Windows.

Added in version 3.3.

os.supports_effective_ids

Đối tượng set cho biết liệu os.access() có cho phép chỉ định True cho tham số effective_ids của nó trên nền tảng cục bộ hay không. (Chỉ định False cho effective_ids luôn được hỗ trợ trên tất cả các nền tảng.) Nếu nền tảng cục bộ hỗ trợ nó, bộ sưu tập sẽ chứa os.access(); nếu không nó sẽ trống rỗng.

Biểu thức này đánh giá thành True nếu os.access() hỗ trợ effective_ids=True trên nền tảng cục bộ:

os.access trong os.supports_effect_ids

Hiện tại effective_ids chỉ được hỗ trợ trên nền tảng Unix; nó không hoạt động trên Windows.

Added in version 3.3.

os.supports_fd

Đối tượng set cho biết chức năng nào trong mô-đun os cho phép chỉ định tham số path của chúng làm bộ mô tả tệp mở trên nền tảng cục bộ. Các nền tảng khác nhau cung cấp các tính năng khác nhau và chức năng cơ bản mà Python sử dụng để chấp nhận các bộ mô tả tệp đang mở vì đối số path không có sẵn trên tất cả các nền tảng mà Python hỗ trợ.

Để xác định xem một hàm cụ thể có cho phép chỉ định bộ mô tả tệp đang mở cho tham số path của nó hay không, hãy sử dụng toán tử in trên supports_fd. Ví dụ: biểu thức này đánh giá là True nếu os.chdir() chấp nhận bộ mô tả tệp mở cho path trên nền tảng cục bộ của bạn:

os.chdir trong os.supports_fd

Added in version 3.3.

Đối tượng set cho biết chức năng nào trong mô-đun os chấp nhận False cho tham số follow_symlinks của chúng trên nền tảng cục bộ. Các nền tảng khác nhau cung cấp các tính năng khác nhau và chức năng cơ bản mà Python sử dụng để triển khai follow_symlinks không có sẵn trên tất cả các nền tảng mà Python hỗ trợ. Để đảm bảo tính nhất quán, các hàm có thể hỗ trợ follow_symlinks luôn cho phép chỉ định tham số nhưng sẽ đưa ra một ngoại lệ nếu chức năng này được sử dụng khi nó không có sẵn cục bộ. (Chỉ định True cho follow_symlinks luôn được hỗ trợ trên tất cả các nền tảng.)

Để kiểm tra xem một hàm cụ thể có chấp nhận False cho tham số follow_symlinks của nó hay không, hãy sử dụng toán tử in trên supports_follow_symlinks. Ví dụ: biểu thức này ước tính là True nếu bạn có thể chỉ định follow_symlinks=False khi gọi os.stat() trên nền tảng cục bộ:

os.stat trong os.supports_follow_symlinks

Added in version 3.3.

Tạo một liên kết tượng trưng trỏ đến src có tên dst.

Tham số src đề cập đến mục tiêu của liên kết (tệp hoặc thư mục được liên kết đến) và dst là tên của liên kết được tạo.

Trên Windows, một liên kết tượng trưng đại diện cho một tệp hoặc một thư mục và không tự động biến thành mục tiêu. Nếu có mục tiêu, loại liên kết tượng trưng sẽ được tạo để phù hợp. Nếu không, liên kết tượng trưng sẽ được tạo dưới dạng thư mục nếu target_is_directoryTrue hoặc nếu không thì liên kết tượng trưng tệp (mặc định). Trên nền tảng không phải Windows, target_is_directory bị bỏ qua.

Chức năng này có thể hỗ trợ paths relative to directory descriptors.

Ghi chú

Trên các phiên bản Windows 10 mới hơn, các tài khoản không có đặc quyền có thể tạo liên kết tượng trưng nếu Chế độ nhà phát triển được bật. Khi Chế độ nhà phát triển không khả dụng/bật, đặc quyền SeCreateSymbolicLinkPrivilege là bắt buộc hoặc quy trình phải được chạy với tư cách quản trị viên.

OSError được nâng lên khi chức năng được gọi bởi người dùng không có đặc quyền.

Tăng một auditing event os.symlink với các đối số src, dst, dir_fd.

sẵn có: Unix, Windows.

Chức năng này bị giới hạn trên WASI, xem Nền tảng WebAssugging để biết thêm thông tin.

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ cho các liên kết tượng trưng của Windows 6.0 (Vista).

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd và hiện cho phép target_is_directory trên nền tảng không phải Windows.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho srcdst.

Thay đổi trong phiên bản 3.8: Đã thêm hỗ trợ cho các liên kết tượng trưng không được nâng cao trên Windows với Chế độ nhà phát triển.

os.sync()

Buộc ghi mọi thứ vào đĩa.

sẵn có: Unix.

Added in version 3.3.

os.truncate(path, length)

Cắt bớt tệp tương ứng với path để nó có kích thước tối đa là length byte.

Chức năng này có thể hỗ trợ specifying a file descriptor.

Tăng một auditing event os.truncate với các đối số path, length.

sẵn có: Unix, Windows.

Added in version 3.3.

Thay đổi trong phiên bản 3.5: Đã thêm hỗ trợ cho Windows

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Loại bỏ (xóa) file path. Hàm này giống hệt về mặt ngữ nghĩa với remove(); tên unlink là tên Unix truyền thống của nó. Vui lòng xem tài liệu dành cho remove() để biết thêm thông tin.

Tăng một auditing event os.remove với các đối số path, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

Đặt quyền truy cập và thời gian sửa đổi của tệp được chỉ định bởi path.

utime() có hai tham số tùy chọn là timesns. Chúng chỉ định thời gian được đặt trên path và được sử dụng như sau:

  • Nếu ns được chỉ định, thì nó phải là một bộ 2 có dạng (atime_ns, mtime_ns) trong đó mỗi thành viên là một int biểu thị nano giây.

  • Nếu times không phải là None thì nó phải là một bộ 2 có dạng (atime, mtime) trong đó mỗi thành viên là một int hoặc float biểu thị giây.

  • Nếu timesNonens không được chỉ định, điều này tương đương với việc chỉ định ns=(atime_ns, mtime_ns) trong đó cả hai thời gian đều là thời gian hiện tại.

Đó là một lỗi khi chỉ định bộ dữ liệu cho cả timesns.

Lưu ý rằng thời gian chính xác bạn đặt ở đây có thể không được trả về bởi lệnh gọi stat() tiếp theo, tùy thuộc vào độ phân giải mà hệ điều hành của bạn ghi lại thời gian truy cập và sửa đổi; xem stat(). Cách tốt nhất để duy trì thời gian chính xác là sử dụng các trường st_atime_nsst_mtime_ns từ đối tượng kết quả os.stat() với tham số nsutime().

Chức năng này có thể hỗ trợ specifying a file descriptor, paths relative to directory descriptorsnot following symlinks.

Tăng một auditing event os.utime với các đối số path, times, ns, dir_fd.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp đang mở và các tham số dir_fd, follow_symlinksns.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.walk(top, topdown=True, onerror=None, followlinks=False)

Tạo tên tệp trong cây thư mục bằng cách duyệt cây từ trên xuống hoặc từ dưới lên. Đối với mỗi thư mục trong cây có gốc tại thư mục top (bao gồm cả top), nó mang lại (dirpath, dirnames, filenames) 3 bộ.

dirpath là một chuỗi, đường dẫn đến thư mục. dirnames là danh sách tên của các thư mục con trong dirpath (bao gồm các liên kết tượng trưng đến các thư mục và không bao gồm '.''..'). filenames là danh sách tên của các tệp không có thư mục trong dirpath. Lưu ý rằng tên trong danh sách không chứa thành phần đường dẫn. Để có đường dẫn đầy đủ (bắt đầu bằng top) tới một tệp hoặc thư mục trong dirpath, hãy thực hiện os.path.join(dirpath, name). Việc danh sách có được sắp xếp hay không tùy thuộc vào hệ thống tệp. Nếu một tệp bị xóa khỏi hoặc được thêm vào thư mục dirpath trong khi tạo danh sách, thì việc đưa tên cho tệp đó vào hay không vẫn chưa được chỉ định.

Nếu đối số tùy chọn topdownTrue hoặc không được chỉ định, bộ ba cho một thư mục sẽ được tạo trước bộ ba cho bất kỳ thư mục con nào của nó (thư mục được tạo từ trên xuống). Nếu topdownFalse, bộ ba cho một thư mục sẽ được tạo sau bộ ba cho tất cả các thư mục con của nó (các thư mục được tạo từ dưới lên). Bất kể giá trị của topdown là gì, danh sách các thư mục con đều được truy xuất trước khi các bộ dữ liệu cho thư mục và các thư mục con của nó được tạo.

Khi topdownTrue, người gọi có thể sửa đổi danh sách dirnames tại chỗ (có thể sử dụng del hoặc gán lát) và walk() sẽ chỉ lặp lại vào các thư mục con có tên vẫn là dirnames; điều này có thể được sử dụng để cắt bớt tìm kiếm, áp đặt thứ tự truy cập cụ thể hoặc thậm chí để thông báo cho walk() về các thư mục mà người gọi tạo hoặc đổi tên trước khi tiếp tục lại walk(). Việc sửa đổi dirnames khi topdownFalse không ảnh hưởng đến hành vi của bước đi, vì ở chế độ từ dưới lên, các thư mục trong dirnames được tạo trước khi dirpath được tạo.

Theo mặc định, các lỗi từ lệnh gọi scandir() sẽ bị bỏ qua. Nếu đối số tùy chọn onerror được chỉ định thì nó phải là một hàm; nó sẽ được gọi với một đối số, một thể hiện OSError. Nó có thể báo cáo lỗi để tiếp tục quá trình dạo bộ hoặc đưa ra ngoại lệ để hủy bỏ quá trình dạo bộ. Lưu ý rằng tên tệp có sẵn dưới dạng thuộc tính filename của đối tượng ngoại lệ.

Theo mặc định, walk() sẽ không đi tới các liên kết tượng trưng dẫn đến các thư mục. Đặt followlinks thành True để truy cập các thư mục được trỏ đến bởi các liên kết tượng trưng, ​​​​trên các hệ thống hỗ trợ chúng.

Ghi chú

Xin lưu ý rằng việc đặt followlinks thành True có thể dẫn đến đệ quy vô hạn nếu một liên kết trỏ đến thư mục mẹ của chính nó. walk() không theo dõi các thư mục mà nó đã truy cập.

Ghi chú

Nếu bạn chuyển một tên đường dẫn tương đối, đừng thay đổi thư mục làm việc hiện tại giữa các lần tiếp tục walk(). walk() không bao giờ thay đổi thư mục hiện tại và cho rằng người gọi nó cũng không thay đổi.

Ví dụ này hiển thị số byte được lấy bởi các tệp không phải thư mục trong mỗi thư mục trong thư mục bắt đầu, ngoại trừ việc nó không nằm trong bất kỳ thư mục con __pycache__ nào:

hệ điều hành nhập khẩu
từ nhập khẩu os.path tham gia, getsize
dành cho thư mục gốc, thư mục, tệp trong os.walk('python/Lib/xml'):
    print(root, "tiêu thụ", end=" ")
    print(sum(getsize(join(root, name)) cho tên trong tệp), end=" ")
    print("byte in", len(file), "tệp không có thư mục")
    nếu '__pycache__' trong thư mục:
        dirs.remove('__pycache__') # don không truy cập thư mục __pycache__

Trong ví dụ tiếp theo (thực hiện đơn giản shutil.rmtree()), việc đi theo cây từ dưới lên là điều cần thiết, rmdir() không cho phép xóa thư mục trước khi thư mục trống:

# Delete mọi thứ có thể truy cập được từ thư mục có tên trong "top",
# assuming không có liên kết tượng trưng.
# CAUTION: Nguy hiểm quá!  Ví dụ: nếu top == '/', nó
# could xóa tất cả các tập tin trên đĩa của bạn.
hệ điều hành nhập khẩu
đối với thư mục gốc, thư mục, tệp trong os.walk(top, topdown=False):
    cho tên trong tập tin:
        os.remove(os.path.join(root, name))
    cho tên trong thư mục:
        os.rmdir(os.path.join(root, name))
os.rmdir (trên cùng)

Tăng một auditing event os.walk với các đối số top, topdown, onerror, followlinks.

Thay đổi trong phiên bản 3.5: Chức năng này hiện gọi os.scandir() thay vì os.listdir(), làm cho nó nhanh hơn bằng cách giảm số lượng cuộc gọi xuống os.stat().

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

Điều này hoạt động chính xác như walk(), ngoại trừ việc nó mang lại (dirpath, dirnames, filenames, dirfd) 4 bộ và nó hỗ trợ dir_fd.

dirpath, dirnamesfilenames giống hệt với đầu ra walk()dirfd là bộ mô tả tệp tham chiếu đến thư mục dirpath.

Chức năng này luôn hỗ trợ paths relative to directory descriptorsnot following symlinks. Tuy nhiên, hãy lưu ý rằng, không giống như các hàm khác, giá trị mặc định fwalk() cho follow_symlinksFalse.

Ghi chú

fwalk() tạo ra các bộ mô tả tệp nên chúng chỉ có hiệu lực cho đến bước lặp tiếp theo, vì vậy bạn nên sao chép chúng (ví dụ: với dup()) nếu bạn muốn giữ chúng lâu hơn.

Ví dụ này hiển thị số byte được lấy bởi các tệp không phải thư mục trong mỗi thư mục trong thư mục bắt đầu, ngoại trừ việc nó không nằm trong bất kỳ thư mục con __pycache__ nào:

hệ điều hành nhập khẩu
cho root, dirs, files, rootfd trong os.fwalk('python/Lib/xml'):
    print(root, "tiêu thụ", end=" ")
    print(sum([os.stat(name, dir_fd=rootfd).st_size cho tên trong tập tin]),
          kết thúc=" ")
    print("byte in", len(file), "tệp không có thư mục")
    nếu '__pycache__' trong thư mục:
        dirs.remove('__pycache__') # don không truy cập thư mục __pycache__

Trong ví dụ tiếp theo, việc đi theo cây từ dưới lên là điều cần thiết: rmdir() không cho phép xóa thư mục trước khi thư mục trống:

# Delete mọi thứ có thể truy cập được từ thư mục có tên trong "top",
# assuming không có liên kết tượng trưng.
# CAUTION: Nguy hiểm quá!  Ví dụ: nếu top == '/', nó
# could xóa tất cả các tập tin trên đĩa của bạn.
hệ điều hành nhập khẩu
cho root, dirs, files, rootfd trong os.fwalk(top, topdown=False):
    cho tên trong tập tin:
        os.unlink(tên, dir_fd=rootfd)
    cho tên trong thư mục:
        os.rmdir(tên, dir_fd=rootfd)

Tăng một auditing event os.fwalk với các đối số top, topdown, onerror, follow_symlinks, dir_fd.

sẵn có: Unix.

Added in version 3.3.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Thay đổi trong phiên bản 3.7: Đã thêm hỗ trợ cho đường dẫn bytes.

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

Tạo một tệp ẩn danh và trả về bộ mô tả tệp đề cập đến nó. flags phải là một trong các hằng số os.MFD_* có sẵn trên hệ thống (hoặc kết hợp ORed theo bit của chúng). Theo mặc định, bộ mô tả tệp mới là non-inheritable.

Tên được cung cấp trong name được sử dụng làm tên tệp và sẽ được hiển thị dưới dạng đích của liên kết tượng trưng tương ứng trong thư mục /proc/self/fd/. Tên hiển thị luôn có tiền tố memfd: và chỉ dùng cho mục đích gỡ lỗi. Tên không ảnh hưởng đến hoạt động của bộ mô tả tệp và do đó, nhiều tệp có thể có cùng tên mà không có bất kỳ tác dụng phụ nào.

sẵn có: Linux >= 3.17 with glibc >= 2.27.

Added in version 3.8.

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

Những lá cờ này có thể được chuyển tới memfd_create().

sẵn có: Linux >= 3.17 with glibc >= 2.27

Cờ MFD_HUGE* chỉ khả dụng kể từ Linux 4.14.

Added in version 3.8.

os.eventfd(initval[, flags=os.EFD_CLOEXEC])

Tạo và trả về một bộ mô tả tệp sự kiện. Bộ mô tả tệp hỗ trợ read()write() thô với kích thước bộ đệm là 8, select(), poll() và tương tự. Xem trang man eventfd(2) để biết thêm thông tin. Theo mặc định, bộ mô tả tệp mới là non-inheritable.

initval là giá trị ban đầu của bộ đếm sự kiện. Giá trị ban đầu phải là số nguyên không dấu 32 bit. Xin lưu ý rằng giá trị ban đầu được giới hạn ở số nguyên không dấu 32 bit mặc dù bộ đếm sự kiện là số nguyên 64 bit không dấu có giá trị tối đa là 264-2.

flags có thể được tạo từ EFD_CLOEXEC, EFD_NONBLOCKEFD_SEMAPHORE.

Nếu EFD_SEMAPHORE được chỉ định và bộ đếm sự kiện khác 0, eventfd_read() trả về 1 và giảm bộ đếm đi một.

Nếu EFD_SEMAPHORE không được chỉ định và bộ đếm sự kiện khác 0, eventfd_read() trả về giá trị bộ đếm sự kiện hiện tại và đặt lại bộ đếm về 0.

Nếu bộ đếm sự kiện bằng 0 và EFD_NONBLOCK không được chỉ định, eventfd_read() sẽ chặn.

eventfd_write() tăng bộ đếm sự kiện. Ghi các khối nếu thao tác ghi sẽ tăng bộ đếm lên giá trị lớn hơn 264-2.

Ví dụ:

hệ điều hành nhập khẩu

# semaphore với giá trị bắt đầu là '1'
fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFD_CLOEXEC)
thử:
    ngữ nghĩa # acquire
    v = os.eventfd_read(fd)
    thử:
        do_work()
    cuối cùng:
        ngữ nghĩa # release
        os.eventfd_write(fd, v)
cuối cùng:
    os.close(fd)

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.10.

os.eventfd_read(fd)

Đọc giá trị từ bộ mô tả tệp eventfd() và trả về int không dấu 64 bit. Hàm này không xác minh rằng fdeventfd().

sẵn có: Linux >= 2.6.27

Added in version 3.10.

os.eventfd_write(fd, value)

Thêm giá trị vào bộ mô tả tệp eventfd(). value phải là số nguyên không dấu 64 bit. Hàm này không xác minh rằng fdeventfd().

sẵn có: Linux >= 2.6.27

Added in version 3.10.

os.EFD_CLOEXEC

Đặt cờ close-on-exec cho bộ mô tả tệp eventfd() mới.

sẵn có: Linux >= 2.6.27

Added in version 3.10.

os.EFD_NONBLOCK

Đặt cờ trạng thái O_NONBLOCK cho bộ mô tả tệp eventfd() mới.

sẵn có: Linux >= 2.6.27

Added in version 3.10.

os.EFD_SEMAPHORE

Cung cấp ngữ nghĩa giống như semaphore để đọc từ bộ mô tả tệp eventfd(). Khi đọc bộ đếm bên trong giảm đi một.

sẵn có: Linux >= 2.6.30

Added in version 3.10.

Bộ mô tả tệp hẹn giờ

Added in version 3.13.

Các chức năng này cung cấp hỗ trợ cho timer file descriptor API của Linux. Đương nhiên, tất cả chúng đều chỉ có trên Linux.

os.timerfd_create(clockid, /, *, flags=0)

Tạo và trả về bộ mô tả tệp hẹn giờ (timerfd).

Bộ mô tả tệp được trả về bởi timerfd_create() hỗ trợ:

Phương thức read() của bộ mô tả tệp có thể được gọi với kích thước bộ đệm là 8. Nếu bộ đếm thời gian đã hết hạn một hoặc nhiều lần, read() trả về số lần hết hạn theo độ bền của máy chủ, có thể được int.from_bytes(x, byteorder=sys.byteorder) chuyển đổi thành int.

select()poll() có thể được sử dụng để đợi cho đến khi hết giờ và có thể đọc được bộ mô tả tệp.

clockid phải là clock ID hợp lệ, như được xác định trong mô-đun time:

Nếu clockidtime.CLOCK_REALTIME, đồng hồ thời gian thực trên toàn hệ thống có thể cài đặt sẽ được sử dụng. Nếu đồng hồ hệ thống bị thay đổi, cài đặt hẹn giờ cần được cập nhật. Để hủy bộ hẹn giờ khi đồng hồ hệ thống thay đổi, hãy xem TFD_TIMER_CANCEL_ON_SET.

Nếu clockidtime.CLOCK_MONOTONIC, một đồng hồ tăng đơn điệu không thể cài đặt được sẽ được sử dụng. Ngay cả khi đồng hồ hệ thống bị thay đổi, cài đặt hẹn giờ sẽ không bị ảnh hưởng.

Nếu clockidtime.CLOCK_BOOTTIME, giống như time.CLOCK_MONOTONIC ngoại trừ nó bao gồm bất kỳ thời điểm nào hệ thống bị treo.

Hành vi của bộ mô tả tệp có thể được sửa đổi bằng cách chỉ định giá trị flags. Có thể sử dụng bất kỳ biến nào sau đây, kết hợp bằng cách sử dụng bitwise OR (toán tử |):

Nếu TFD_NONBLOCK không được đặt làm cờ, read() sẽ chặn cho đến khi hết giờ. Nếu nó được đặt làm cờ, read() sẽ không chặn, nhưng nếu chưa hết hạn kể từ lệnh gọi đọc cuối cùng, read() sẽ tăng OSError với errno được đặt thành errno.EAGAIN.

TFD_CLOEXEC luôn được Python đặt tự động.

Bộ mô tả tệp phải được đóng bằng os.close() khi không cần thiết nữa, nếu không bộ mô tả tệp sẽ bị rò rỉ.

Xem thêm

Trang người đàn ông timerfd_create(2).

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.timerfd_settime(fd, /, *, flags=flags, initial=0.0, interval=0.0)

Thay đổi bộ đếm thời gian bên trong của bộ mô tả tệp hẹn giờ. Chức năng này vận hành bộ đếm thời gian giống như timerfd_settime_ns().

fd phải là bộ mô tả tệp hẹn giờ hợp lệ.

Hoạt động của bộ hẹn giờ có thể được sửa đổi bằng cách chỉ định giá trị flags. Có thể sử dụng bất kỳ biến nào sau đây, kết hợp bằng cách sử dụng bitwise OR (toán tử |):

Bộ hẹn giờ bị tắt bằng cách đặt initial về 0 (0). Nếu initial bằng hoặc lớn hơn 0 thì bộ hẹn giờ sẽ được bật. Nếu initial nhỏ hơn 0, nó sẽ tạo ra một ngoại lệ OSError với errno được đặt thành errno.EINVAL

Theo mặc định, bộ hẹn giờ sẽ kích hoạt khi hết giây initial. (Nếu initial bằng 0, đồng hồ hẹn giờ sẽ kích hoạt ngay lập tức.)

Tuy nhiên, nếu cờ TFD_TIMER_ABSTIME được đặt, bộ hẹn giờ sẽ kích hoạt khi đồng hồ của bộ hẹn giờ (được đặt bởi clockid trong timerfd_create()) đạt đến initial giây.

Khoảng thời gian của bộ hẹn giờ được đặt bởi interval float. Nếu interval bằng 0, bộ hẹn giờ chỉ kích hoạt một lần vào lần hết hạn đầu tiên. Nếu interval lớn hơn 0, bộ hẹn giờ sẽ kích hoạt mỗi khi số giây interval trôi qua kể từ lần hết hạn trước đó. Nếu interval nhỏ hơn 0, nó sẽ tăng OSError với errno được đặt thành errno.EINVAL

Nếu cờ TFD_TIMER_CANCEL_ON_SET được đặt cùng với TFD_TIMER_ABSTIME và đồng hồ cho bộ hẹn giờ này là time.CLOCK_REALTIME, bộ hẹn giờ được đánh dấu là có thể hủy nếu đồng hồ thời gian thực thay đổi không liên tục. Việc đọc phần mô tả bị hủy bỏ do lỗi ECANCELED.

Linux quản lý đồng hồ hệ thống dưới dạng UTC. Quá trình chuyển đổi thời gian tiết kiệm ánh sáng ban ngày được thực hiện bằng cách chỉ thay đổi độ lệch thời gian và không gây ra thay đổi đồng hồ hệ thống không liên tục.

Việc thay đổi đồng hồ hệ thống không liên tục sẽ do các sự kiện sau gây ra:

  • settimeofday

  • clock_settime

  • đặt ngày giờ hệ thống bằng lệnh date

Trả về bộ dữ liệu gồm hai mục (next_expiration, interval) từ trạng thái hẹn giờ trước đó, trước khi hàm này được thực thi.

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.timerfd_settime_ns(fd, /, *, flags=0, initial=0, interval=0)

Tương tự như timerfd_settime(), nhưng sử dụng thời gian tính bằng nano giây. Chức năng này vận hành bộ đếm thời gian giống như timerfd_settime().

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.timerfd_gettime(fd, /)

Trả về một bộ float gồm hai mục (next_expiration, interval).

next_expiration biểu thị thời gian tương đối cho đến khi bộ đếm thời gian tiếp theo kích hoạt, bất kể cờ TFD_TIMER_ABSTIME có được đặt hay không.

interval biểu thị khoảng thời gian của bộ hẹn giờ. Nếu bằng 0, bộ hẹn giờ sẽ chỉ kích hoạt một lần, sau khi next_expiration trôi qua.

Xem thêm

timerfd_gettime(2)

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.timerfd_gettime_ns(fd, /)

Tương tự như timerfd_gettime(), nhưng thời gian trả về tính bằng nano giây.

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.TFD_NONBLOCK

Cờ cho hàm timerfd_create(), đặt cờ trạng thái O_NONBLOCK cho bộ mô tả tệp hẹn giờ mới. Nếu TFD_NONBLOCK không được đặt làm cờ, read() sẽ chặn.

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.TFD_CLOEXEC

Cờ cho hàm timerfd_create(), Nếu TFD_CLOEXEC được đặt làm cờ, hãy đặt cờ close-on-exec cho bộ mô tả tệp mới.

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.TFD_TIMER_ABSTIME

Cờ cho các hàm timerfd_settime()timerfd_settime_ns(). Nếu cờ này được đặt, initial được hiểu là giá trị tuyệt đối trên đồng hồ của bộ đếm thời gian (tính bằng UTC giây hoặc nano giây kể từ Kỷ nguyên Unix).

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

os.TFD_TIMER_CANCEL_ON_SET

Cờ cho các hàm timerfd_settime()timerfd_settime_ns() cùng với TFD_TIMER_ABSTIME. Bộ đếm thời gian bị hủy khi thời gian của đồng hồ cơ bản thay đổi không liên tục.

sẵn có: Linux >= 2.6.27 with glibc >= 2.8

Added in version 3.13.

Thuộc tính mở rộng của Linux

Added in version 3.3.

Tất cả các chức năng này đều chỉ có trên Linux.

os.getxattr(path, attribute, *, follow_symlinks=True)

Trả về giá trị của thuộc tính hệ thống tệp mở rộng attribute cho path. attribute có thể là byte hoặc str (trực tiếp hoặc gián tiếp thông qua giao diện PathLike). Nếu là str, nó được mã hóa bằng mã hóa hệ thống tập tin.

Chức năng này có thể hỗ trợ specifying a file descriptornot following symlinks.

Tăng một auditing event os.getxattr với các đối số path, attribute.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho pathattribute.

os.listxattr(path=None, *, follow_symlinks=True)

Trả về danh sách các thuộc tính hệ thống tệp mở rộng trên path. Các thuộc tính trong danh sách được biểu diễn dưới dạng chuỗi được giải mã bằng mã hóa hệ thống tệp. Nếu pathNone, listxattr() sẽ kiểm tra thư mục hiện tại.

Chức năng này có thể hỗ trợ specifying a file descriptornot following symlinks.

Tăng một auditing event os.listxattr với đối số path.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os.removexattr(path, attribute, *, follow_symlinks=True)

Xóa thuộc tính hệ thống tệp mở rộng attribute khỏi path. attribute phải là byte hoặc str (trực tiếp hoặc gián tiếp thông qua giao diện PathLike). Nếu là một chuỗi, nó được mã hóa bằng filesystem encoding and error handler.

Chức năng này có thể hỗ trợ specifying a file descriptornot following symlinks.

Tăng một auditing event os.removexattr với các đối số path, attribute.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho pathattribute.

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

Đặt thuộc tính hệ thống tệp mở rộng attribute trên path thành value. attribute phải là byte hoặc str không có NUL được nhúng (trực tiếp hoặc gián tiếp thông qua giao diện PathLike). Nếu là str thì nó được mã hóa bằng filesystem encoding and error handler. flags có thể là XATTR_REPLACE hoặc XATTR_CREATE. Nếu XATTR_REPLACE được cung cấp và thuộc tính không tồn tại, ENODATA sẽ được nâng lên. Nếu XATTR_CREATE được cung cấp và thuộc tính đã tồn tại, thuộc tính sẽ không được tạo và EEXISTS sẽ được nâng lên.

Chức năng này có thể hỗ trợ specifying a file descriptornot following symlinks.

Ghi chú

Một lỗi trong các phiên bản nhân Linux nhỏ hơn 2.6.39 đã khiến đối số cờ bị bỏ qua trên một số hệ thống tệp.

Tăng một auditing event os.setxattr với các đối số path, attribute, value, flags.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho pathattribute.

os.XATTR_SIZE_MAX

Kích thước tối đa mà giá trị của thuộc tính mở rộng có thể có. Hiện tại, đây là 64 KiB trên Linux.

os.XATTR_CREATE

Đây là một giá trị có thể có cho đối số flags trong setxattr(). Nó cho biết thao tác phải tạo một thuộc tính.

os.XATTR_REPLACE

Đây là một giá trị có thể có cho đối số flags trong setxattr(). Nó cho biết thao tác phải thay thế một thuộc tính hiện có.

Quản lý quy trình

Các chức năng này có thể được sử dụng để tạo và quản lý các quy trình.

Các hàm exec* khác nhau lấy danh sách các đối số cho chương trình mới được tải vào quy trình. Trong mỗi trường hợp, đối số đầu tiên trong số này được chuyển đến chương trình mới dưới dạng tên riêng của nó chứ không phải dưới dạng đối số mà người dùng có thể đã nhập trên dòng lệnh. Đối với lập trình viên C, đây là argv[0] được chuyển tới main() của chương trình. Ví dụ: os.execv('/bin/echo', ['foo', 'bar']) sẽ chỉ in bar trên đầu ra tiêu chuẩn; foo dường như sẽ bị bỏ qua.

os.abort()

Tạo tín hiệu SIGABRT cho quy trình hiện tại. Trên Unix, hành vi mặc định là tạo ra kết xuất lõi; trên Windows, quy trình ngay lập tức trả về mã thoát 3. Xin lưu ý rằng việc gọi hàm này sẽ không gọi trình xử lý tín hiệu Python đã đăng ký cho SIGABRT bằng signal.signal().

os.add_dll_directory(path)

Thêm đường dẫn vào đường dẫn tìm kiếm DLL.

Đường dẫn tìm kiếm này được sử dụng khi giải quyết các phần phụ thuộc cho các mô-đun mở rộng đã nhập (bản thân mô-đun này được giải quyết thông qua sys.path) và cả ctypes.

Xóa thư mục bằng cách gọi close() trên đối tượng được trả về hoặc sử dụng nó trong câu lệnh with.

Xem Microsoft documentation để biết thêm thông tin về cách tải các tệp DLL.

Tăng một auditing event os.add_dll_directory với đối số path.

sẵn có: Windows.

Added in version 3.8: Các phiên bản trước của CPython sẽ giải quyết các tệp DLL bằng cách sử dụng hành vi mặc định cho quy trình hiện tại. Điều này dẫn đến sự không nhất quán, chẳng hạn như đôi khi chỉ tìm kiếm PATH hoặc thư mục làm việc hiện tại và các chức năng của hệ điều hành như AddDllDirectory không có tác dụng.

Trong phiên bản 3.8, hai cách chính để tải DLL hiện đã ghi đè rõ ràng hành vi trên toàn quy trình để đảm bảo tính nhất quán. Xem porting notes để biết thông tin về cách cập nhật thư viện.

os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)

Tất cả các hàm này đều thực thi một chương trình mới, thay thế quy trình hiện tại; họ không trở lại. Trên Unix, tệp thực thi mới được tải vào quy trình hiện tại và sẽ có cùng id tiến trình với người gọi. Lỗi sẽ được báo cáo là ngoại lệ OSError.

Quá trình hiện tại được thay thế ngay lập tức. Các đối tượng và bộ mô tả tệp đang mở không bị xóa, vì vậy nếu có thể có dữ liệu được lưu vào bộ đệm trên các tệp đang mở này, bạn nên xóa chúng bằng cách sử dụng flush() hoặc os.fsync() trước khi gọi hàm exec*.

Các biến thể "l" và "v" của hàm exec* khác nhau về cách truyền đối số dòng lệnh. Các biến thể "l" có lẽ là dễ sử dụng nhất nếu số lượng tham số được cố định khi viết mã; các tham số riêng lẻ chỉ đơn giản trở thành tham số bổ sung cho các hàm execl*(). Các biến thể "v" phù hợp khi số lượng tham số có thể thay đổi, với các đối số được truyền trong danh sách hoặc bộ dữ liệu dưới dạng tham số args. Trong cả hai trường hợp, các đối số cho tiến trình con phải bắt đầu bằng tên của lệnh đang được chạy, nhưng điều này không được thực thi.

Các biến thể có chữ "p" ở gần cuối (execlp(), execlpe(), execvp()execvpe()) sẽ sử dụng biến môi trường PATH để định vị chương trình file. Khi môi trường được thay thế (sử dụng một trong các biến thể exec*e, được thảo luận trong đoạn tiếp theo), môi trường mới được sử dụng làm nguồn của biến PATH. Các biến thể khác, execl(), execle(), execv()execve(), sẽ không sử dụng biến PATH để định vị tệp thực thi; path phải chứa đường dẫn tuyệt đối hoặc tương đối thích hợp. Đường dẫn tương đối phải bao gồm ít nhất một dấu gạch chéo, ngay cả trên Windows, vì tên đơn giản sẽ không được giải quyết.

Đối với execle(), execlpe(), execve()execvpe() (lưu ý rằng tất cả đều kết thúc bằng "e"), tham số env phải là ánh xạ được sử dụng để xác định các biến môi trường cho quy trình mới (các biến này được sử dụng thay vì môi trường của quy trình hiện tại); các hàm execl(), execlp(), execv()execvp() đều khiến quy trình mới kế thừa môi trường của quy trình hiện tại.

Đối với execve() trên một số nền tảng, path cũng có thể được chỉ định làm bộ mô tả tệp đang mở. Chức năng này có thể không được hỗ trợ trên nền tảng của bạn; bạn có thể kiểm tra xem nó có khả dụng hay không bằng os.supports_fd. Nếu không có sẵn, việc sử dụng nó sẽ tạo ra NotImplementedError.

Tăng một auditing event os.exec với các đối số path, args, env.

sẵn có: Unix, Windows, not WASI, not Android, not iOS.

Thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ để chỉ định path làm bộ mô tả tệp mở cho execve().

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

os._exit(n)

Thoát khỏi quá trình với trạng thái n mà không gọi trình xử lý dọn dẹp, xóa bộ đệm stdio, v.v.

Ghi chú

Cách thoát tiêu chuẩn là sys.exit(n). _exit() thường chỉ được sử dụng trong tiến trình con sau fork().

Các mã thoát sau được xác định và có thể được sử dụng với _exit(), mặc dù chúng không bắt buộc. Chúng thường được sử dụng cho các chương trình hệ thống được viết bằng Python, chẳng hạn như chương trình gửi lệnh bên ngoài của máy chủ thư.

Ghi chú

Một số trong số này có thể không có sẵn trên tất cả các nền tảng Unix vì có một số biến thể. Các hằng số này được xác định ở nơi chúng được xác định bởi nền tảng cơ bản.

os.EX_OK

Mã thoát có nghĩa là không có lỗi xảy ra. Có thể được lấy từ giá trị xác định của EXIT_SUCCESS trên một số nền tảng. Nói chung có giá trị bằng 0.

sẵn có: Unix, Windows.

os.EX_USAGE

Mã thoát có nghĩa là lệnh đã được sử dụng không chính xác, chẳng hạn như khi đưa ra số lượng đối số sai.

sẵn có: Unix, not WASI.

os.EX_DATAERR

Mã thoát có nghĩa là dữ liệu đầu vào không chính xác.

sẵn có: Unix, not WASI.

os.EX_NOINPUT

Mã thoát có nghĩa là tệp đầu vào không tồn tại hoặc không thể đọc được.

sẵn có: Unix, not WASI.

os.EX_NOUSER

Mã thoát có nghĩa là người dùng được chỉ định không tồn tại.

sẵn có: Unix, not WASI.

os.EX_NOHOST

Mã thoát có nghĩa là máy chủ được chỉ định không tồn tại.

sẵn có: Unix, not WASI.

os.EX_UNAVAILABLE

Mã thoát có nghĩa là dịch vụ được yêu cầu không khả dụng.

sẵn có: Unix, not WASI.

os.EX_SOFTWARE

Mã thoát có nghĩa là đã phát hiện lỗi phần mềm nội bộ.

sẵn có: Unix, not WASI.

os.EX_OSERR

Mã thoát có nghĩa là đã phát hiện thấy lỗi hệ điều hành, chẳng hạn như không thể phân nhánh hoặc tạo đường dẫn.

sẵn có: Unix, not WASI.

os.EX_OSFILE

Mã thoát có nghĩa là một số tệp hệ thống không tồn tại, không thể mở được hoặc có một số loại lỗi khác.

sẵn có: Unix, not WASI.

os.EX_CANTCREAT

Mã thoát có nghĩa là không thể tạo tệp đầu ra do người dùng chỉ định.

sẵn có: Unix, not WASI.

os.EX_IOERR

Mã thoát có nghĩa là đã xảy ra lỗi khi thực hiện I/O trên một số tệp.

sẵn có: Unix, not WASI.

os.EX_TEMPFAIL

Mã thoát có nghĩa là đã xảy ra lỗi tạm thời. Điều này cho biết điều gì đó có thể không thực sự là lỗi, chẳng hạn như không thể thực hiện được kết nối mạng trong quá trình thực hiện thao tác có thể thử lại.

sẵn có: Unix, not WASI.

os.EX_PROTOCOL

Mã thoát có nghĩa là việc trao đổi giao thức là bất hợp pháp, không hợp lệ hoặc không được hiểu.

sẵn có: Unix, not WASI.

os.EX_NOPERM

Mã thoát có nghĩa là không có đủ quyền để thực hiện thao tác (nhưng không dành cho các sự cố hệ thống tệp).

sẵn có: Unix, not WASI.

os.EX_CONFIG

Mã thoát có nghĩa là đã xảy ra một số loại lỗi cấu hình.

sẵn có: Unix, not WASI.

os.EX_NOTFOUND

Mã thoát có nghĩa là "không tìm thấy mục nhập".

sẵn có: Unix, not WASI.

os.fork()

Ngã ba một quá trình con. Trả về 0 ở phần tử con và id tiến trình của phần tử con trong phần tử cha. Nếu xảy ra lỗi, OSError sẽ được nâng lên.

Lưu ý rằng một số nền tảng bao gồm FreeBSD <= 6.3 và Cygwin đã biết có sự cố khi sử dụng fork() từ một chuỗi.

Tăng auditing event os.fork mà không có đối số.

Cảnh báo

Nếu bạn sử dụng ổ cắm TLS trong ứng dụng gọi fork(), hãy xem cảnh báo trong tài liệu ssl.

Cảnh báo

Trên macOS, việc sử dụng chức năng này không an toàn khi kết hợp với việc sử dụng API hệ thống cấp cao hơn và bao gồm cả việc sử dụng urllib.request.

Thay đổi trong phiên bản 3.8: Việc gọi fork() trong trình thông dịch phụ không còn được hỗ trợ (RuntimeError được nâng lên).

Thay đổi trong phiên bản 3.12: Nếu Python có thể phát hiện quy trình của bạn có nhiều luồng, thì os.fork() hiện sẽ đưa ra DeprecationWarning.

Chúng tôi chọn hiển thị điều này như một cảnh báo, khi có thể phát hiện được, để thông báo rõ hơn cho các nhà phát triển về vấn đề thiết kế mà nền tảng POSIX đặc biệt lưu ý là không được hỗ trợ. Ngay cả trong mã mà appears hoạt động, việc kết hợp luồng với os.fork() trên nền tảng POSIX chưa bao giờ là an toàn. Bản thân thời gian chạy CPython luôn thực hiện các lệnh gọi API không an toàn để sử dụng trong tiến trình con khi các luồng tồn tại trong tiến trình gốc (chẳng hạn như mallocfree).

Người dùng macOS hoặc người dùng triển khai libc hoặc malloc không phải là những người thường thấy trong glibc cho đến nay nằm trong số những người có nhiều khả năng gặp phải tình trạng bế tắc khi chạy mã như vậy.

Hãy xem this discussion on fork being incompatible with threads để biết chi tiết kỹ thuật về lý do tại sao chúng tôi lại giải quyết vấn đề tương thích nền tảng lâu đời này với các nhà phát triển.

sẵn có: POSIX, not WASI, not Android, not iOS.

os.forkpty()

Phân nhánh một tiến trình con, sử dụng một thiết bị đầu cuối giả mới làm thiết bị đầu cuối điều khiển của con. Trả về một cặp (pid, fd), trong đó pid0 ở phần tử con, id tiến trình của phần tử con mới ở phần tử mẹ và fd là bộ mô tả tệp của phần cuối chính của thiết bị đầu cuối giả. Để có cách tiếp cận di động hơn, hãy sử dụng mô-đun pty. Nếu xảy ra lỗi, OSError sẽ được nâng lên.

Tăng auditing event os.forkpty mà không có đối số.

Cảnh báo

Trên macOS, việc sử dụng chức năng này không an toàn khi kết hợp với việc sử dụng API hệ thống cấp cao hơn và bao gồm cả việc sử dụng urllib.request.

Thay đổi trong phiên bản 3.8: Việc gọi forkpty() trong trình thông dịch phụ không còn được hỗ trợ (RuntimeError được nâng lên).

Thay đổi trong phiên bản 3.12: Nếu Python có thể phát hiện ra rằng tiến trình của bạn có nhiều luồng thì điều này hiện sẽ tạo ra DeprecationWarning. Xem phần giải thích dài hơn trên os.fork().

sẵn có: Unix, not WASI, not Android, not iOS.

os.kill(pid, sig, /)

Gửi tín hiệu sig tới tiến trình pid. Các hằng số cho các tín hiệu cụ thể có sẵn trên nền tảng máy chủ được xác định trong mô-đun signal.

Windows: Tín hiệu signal.CTRL_C_EVENTsignal.CTRL_BREAK_EVENT là các tín hiệu đặc biệt chỉ có thể được gửi đến các quy trình bảng điều khiển có chung cửa sổ bảng điều khiển, ví dụ: một số quy trình con. Bất kỳ giá trị nào khác cho sig sẽ khiến quá trình bị hủy bỏ vô điều kiện bởi TerminateProcess API và mã thoát sẽ được đặt thành sig.

Xem thêm signal.pthread_kill().

Tăng một auditing event os.kill với các đối số pid, sig.

sẵn có: Unix, Windows, not WASI, not iOS.

Thay đổi trong phiên bản 3.2: Đã thêm hỗ trợ Windows.

os.killpg(pgid, sig, /)

Gửi tín hiệu sig tới nhóm xử lý pgid.

Tăng một auditing event os.killpg với các đối số pgid, sig.

sẵn có: Unix, not WASI, not iOS.

os.nice(increment, /)

Thêm increment vào "độ đẹp" của quy trình. Trả lại sự tốt đẹp mới.

sẵn có: Unix, not WASI.

os.pidfd_open(pid, flags=0)

Trả về một bộ mô tả tệp tham chiếu đến quá trình pid với tập hợp flags. Bộ mô tả này có thể được sử dụng để thực hiện quản lý quy trình mà không cần chủng tộc và tín hiệu.

Xem trang man pidfd_open(2) để biết thêm chi tiết.

sẵn có: Linux >= 5.3, Android >= build-time API level 31

Added in version 3.9.

os.PIDFD_NONBLOCK

Cờ này cho biết bộ mô tả tệp sẽ không bị chặn. Nếu quá trình được tham chiếu bởi bộ mô tả tệp vẫn chưa kết thúc thì việc cố gắng đợi bộ mô tả tệp bằng waitid(2) sẽ ngay lập tức trả về lỗi EAGAIN thay vì chặn.

sẵn có: Linux >= 5.10

Added in version 3.12.

os.plock(op, /)

Khóa các phân đoạn chương trình vào bộ nhớ. Giá trị của op (được xác định trong <sys/lock.h>) xác định phân đoạn nào bị khóa.

sẵn có: Unix, not WASI, not iOS.

os.popen(cmd, mode='r', buffering=-1)

Mở một đường ống đến hoặc từ lệnh cmd. Giá trị trả về là một đối tượng tệp mở được kết nối với đường ống, có thể đọc hoặc ghi tùy thuộc vào việc mode'r' (mặc định) hay 'w'. Đối số buffering có cùng ý nghĩa với đối số tương ứng với hàm open() tích hợp. Đối tượng tệp được trả về đọc hoặc ghi chuỗi văn bản thay vì byte.

Phương thức close trả về None nếu quy trình con thoát thành công hoặc mã trả về của quy trình con nếu có lỗi. Trên hệ thống POSIX, nếu mã trả về là dương thì nó biểu thị giá trị trả về của quá trình dịch trái một byte. Nếu mã trả về là số âm thì quá trình này bị chấm dứt bởi tín hiệu được cung cấp bởi giá trị phủ định của mã trả về. (Ví dụ: giá trị trả về có thể là - signal.SIGKILL nếu quy trình con bị hủy.) Trên hệ thống Windows, giá trị trả về chứa mã trả về số nguyên có dấu từ quy trình con.

Trên Unix, waitstatus_to_exitcode() có thể được sử dụng để chuyển đổi kết quả của phương thức close (trạng thái thoát) thành mã thoát nếu nó không phải là None. Trên Windows, kết quả của phương thức close trực tiếp là mã thoát (hoặc None).

Điều này được thực hiện bằng subprocess.Popen; xem tài liệu của lớp đó để biết những cách mạnh mẽ hơn để quản lý và giao tiếp với các quy trình con.

sẵn có: not WASI, not Android, not iOS.

Ghi chú

Python UTF-8 Mode ảnh hưởng đến mã hóa được sử dụng cho nội dung cmd và pipe.

popen() là một trình bao bọc đơn giản xung quanh subprocess.Popen. Sử dụng subprocess.Popen hoặc subprocess.run() để kiểm soát các tùy chọn như mã hóa.

Sắp loại bỏ từ phiên bản 3.14: Hàm này là soft deprecated và không còn được sử dụng để viết mã mới nữa. Thay vào đó, nên sử dụng mô-đun subprocess.

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Bao bọc thư viện posix_spawn() C API để sử dụng từ Python.

Hầu hết người dùng nên sử dụng subprocess.run() thay vì posix_spawn().

Các đối số chỉ có vị trí path, argsenv tương tự như execve(). env được phép là None, trong trường hợp đó môi trường của quy trình hiện tại được sử dụng.

Tham số path là đường dẫn đến file thực thi. Zz002zz phải chứa một thư mục. Sử dụng posix_spawnp() để truyền một tệp thực thi không có thư mục.

Đối số file_actions có thể là một chuỗi các bộ mô tả các hành động để thực hiện các bộ mô tả tệp cụ thể trong quy trình con giữa các bước fork()exec() của thư viện C. Mục đầu tiên trong mỗi bộ dữ liệu phải là một trong ba chỉ báo loại được liệt kê bên dưới để mô tả các phần tử còn lại của bộ dữ liệu:

os.POSIX_SPAWN_OPEN

(os.POSIX_SPAWN_OPEN, fd, path, flags, mode)

Thực hiện os.dup2(os.open(path, flags, mode), fd).

os.POSIX_SPAWN_CLOSE

(os.POSIX_SPAWN_CLOSE, fd)

Thực hiện os.close(fd).

os.POSIX_SPAWN_DUP2

(os.POSIX_SPAWN_DUP2, fd, new_fd)

Thực hiện os.dup2(fd, new_fd).

os.POSIX_SPAWN_CLOSEFROM

(os.POSIX_SPAWN_CLOSEFROM, fd)

Thực hiện os.closerange(fd, INF).

Các bộ dữ liệu này tương ứng với các lệnh gọi posix_spawn_file_actions_addopen(), posix_spawn_file_actions_addclose(), posix_spawn_file_actions_adddup2()posix_spawn_file_actions_addclosefrom_np() API của thư viện C được sử dụng để chuẩn bị cho chính lệnh gọi posix_spawn().

Đối số setpgroup sẽ đặt nhóm tiến trình của con thành giá trị được chỉ định. Nếu giá trị được chỉ định là 0, ID nhóm quy trình của con sẽ được tạo giống với ID quy trình của nó. Nếu giá trị của setpgroup không được đặt, tiến trình con sẽ kế thừa ID nhóm tiến trình của tiến trình cha. Đối số này tương ứng với cờ POSIX_SPAWN_SETPGROUP của thư viện C.

Nếu đối số resetidsTrue, nó sẽ đặt lại UID và GID hiệu dụng của tiến trình con thành UID và GID thực của tiến trình cha. Nếu đối số là False thì phần tử con sẽ giữ lại UID và GID hiệu dụng của phần tử cha. Trong cả hai trường hợp, nếu các bit quyền set-user-ID và set-group-ID được bật trên tệp thực thi, hiệu ứng của chúng sẽ ghi đè cài đặt của UID và GID hiệu quả. Đối số này tương ứng với cờ POSIX_SPAWN_RESETIDS của thư viện C.

Nếu đối số setsidTrue, nó sẽ tạo ID phiên mới cho posix_spawn. setsid yêu cầu cờ POSIX_SPAWN_SETSID hoặc POSIX_SPAWN_SETSID_NP. Ngược lại, NotImplementedError sẽ được nâng lên.

Đối số setsigmask sẽ đặt mặt nạ tín hiệu thành bộ tín hiệu được chỉ định. Nếu tham số này không được sử dụng thì đứa trẻ sẽ kế thừa mặt nạ tín hiệu của cha mẹ. Đối số này tương ứng với cờ POSIX_SPAWN_SETSIGMASK của thư viện C.

Đối số sigdef sẽ đặt lại cách sắp xếp tất cả các tín hiệu trong tập hợp được chỉ định. Đối số này tương ứng với cờ POSIX_SPAWN_SETSIGDEF của thư viện C.

Đối số scheduler phải là một bộ chứa chính sách bộ lập lịch (tùy chọn) và một phiên bản của sched_param với các tham số bộ lập lịch. Giá trị None thay cho chính sách lập lịch cho biết chính sách đó không được cung cấp. Đối số này là sự kết hợp của các cờ POSIX_SPAWN_SETSCHEDPARAMPOSIX_SPAWN_SETSCHEDULER trong thư viện C.

Tăng một auditing event os.posix_spawn với các đối số path, argv, env.

Added in version 3.8.

Thay đổi trong phiên bản 3.13: Tham số env chấp nhận None. os.POSIX_SPAWN_CLOSEFROM có sẵn trên các nền tảng có posix_spawn_file_actions_addclosefrom_np().

sẵn có: Unix, not WASI, not Android, not iOS.

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Bao bọc thư viện posix_spawnp() C API để sử dụng từ Python.

Tương tự như posix_spawn() ngoại trừ việc hệ thống tìm kiếm tệp executable trong danh sách các thư mục được chỉ định bởi biến môi trường PATH (theo cách tương tự như đối với execvp(3)).

Tăng một auditing event os.posix_spawn với các đối số path, argv, env.

Added in version 3.8.

sẵn có: POSIX, not WASI, not Android, not iOS.

Xem tài liệu posix_spawn().

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

Đăng ký các lệnh gọi sẽ được thực thi khi một tiến trình con mới được phân nhánh bằng cách sử dụng os.fork() hoặc các API nhân bản quy trình tương tự. Các tham số là tùy chọn và chỉ có từ khóa. Mỗi chỉ định một điểm gọi khác nhau.

  • before là một hàm được gọi trước khi phân nhánh một tiến trình con.

  • after_in_parent là một hàm được gọi từ tiến trình cha sau khi phân nhánh một tiến trình con.

  • after_in_child là một hàm được gọi từ tiến trình con.

Các cuộc gọi này chỉ được thực hiện nếu điều khiển dự kiến sẽ quay trở lại trình thông dịch Python. Việc khởi chạy subprocess thông thường sẽ không kích hoạt chúng vì trẻ sẽ không vào lại trình thông dịch.

Các hàm được đăng ký để thực hiện trước khi phân nhánh được gọi theo thứ tự đăng ký ngược lại. Các hàm được đăng ký để thực thi sau khi phân nhánh (ở cấp độ cha hoặc ở cấp độ con) được gọi theo thứ tự đăng ký.

Lưu ý rằng các lệnh gọi fork() được thực hiện bởi mã C của bên thứ ba có thể không gọi các hàm đó, trừ khi nó gọi rõ ràng PyOS_BeforeFork(), PyOS_AfterFork_Parent()PyOS_AfterFork_Child().

Không có cách nào để hủy đăng ký một chức năng.

sẵn có: Unix, not WASI, not Android, not iOS.

Added in version 3.7.

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

Thực hiện chương trình path trong một quy trình mới.

(Lưu ý rằng mô-đun subprocess cung cấp các phương tiện mạnh mẽ hơn để tạo ra các quy trình mới và truy xuất kết quả của chúng; sử dụng mô-đun đó tốt hơn là sử dụng các chức năng này. Đặc biệt hãy kiểm tra phần Thay thế các chức năng cũ hơn bằng Mô-đun subprocess.)

Nếu modeP_NOWAIT, hàm này trả về id tiến trình của tiến trình mới; nếu modeP_WAIT, trả về mã thoát của quy trình nếu nó thoát bình thường hoặc -signal, trong đó signal là tín hiệu đã giết quá trình. Trên Windows, id tiến trình thực sự sẽ là phần xử lý tiến trình, do đó có thể được sử dụng với chức năng waitpid().

Lưu ý trên VxWorks, hàm này không trả về -signal khi quá trình mới bị hủy. Thay vào đó nó làm tăng ngoại lệ OSError.

Các biến thể "l" và "v" của hàm spawn* khác nhau về cách truyền đối số dòng lệnh. Các biến thể "l" có lẽ là dễ sử dụng nhất nếu số lượng tham số được cố định khi viết mã; các tham số riêng lẻ chỉ đơn giản trở thành tham số bổ sung cho các hàm spawnl*(). Các biến thể "v" phù hợp khi số lượng tham số có thể thay đổi, với các đối số được truyền trong danh sách hoặc bộ dữ liệu dưới dạng tham số args. Trong cả hai trường hợp, các đối số cho tiến trình con phải bắt đầu bằng tên của lệnh đang được chạy.

Các biến thể bao gồm chữ "p" thứ hai ở gần cuối (spawnlp(), spawnlpe(), spawnvp()spawnvpe()) sẽ sử dụng biến môi trường PATH để định vị chương trình file. Khi môi trường được thay thế (sử dụng một trong các biến thể spawn*e, được thảo luận trong đoạn tiếp theo), môi trường mới được sử dụng làm nguồn của biến PATH. Các biến thể khác, spawnl(), spawnle(), spawnv()spawnve(), sẽ không sử dụng biến PATH để định vị tệp thực thi; path phải chứa đường dẫn tuyệt đối hoặc tương đối thích hợp.

Đối với spawnle(), spawnlpe(), spawnve()spawnvpe() (lưu ý rằng tất cả đều kết thúc bằng "e"), tham số env phải là ánh xạ được sử dụng để xác định các biến môi trường cho quy trình mới (chúng được sử dụng thay vì môi trường của quy trình hiện tại); các hàm spawnl(), spawnlp(), spawnv()spawnvp() đều khiến quy trình mới kế thừa môi trường của quy trình hiện tại. Lưu ý rằng khóa và giá trị trong từ điển env phải là chuỗi; các khóa hoặc giá trị không hợp lệ sẽ khiến hàm bị lỗi, với giá trị trả về là 127.

Ví dụ: các lệnh gọi tới spawnlp()spawnvpe() sau đây là tương đương:

hệ điều hành nhập khẩu
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

Tăng một auditing event os.spawn với các đối số mode, path, args, env.

sẵn có: Unix, Windows, not WASI, not Android, not iOS.

spawnlp(), spawnlpe(), spawnvp()spawnvpe() không có sẵn trên Windows. spawnle()spawnve() không an toàn cho luồng trên Windows; chúng tôi khuyên bạn nên sử dụng mô-đun subprocess để thay thế.

Thay đổi trong phiên bản 3.6: Chấp nhận path-like object.

Sắp loại bỏ từ phiên bản 3.14: Các hàm này là soft deprecated và không còn được sử dụng để viết mã mới nữa. Thay vào đó, nên sử dụng mô-đun subprocess.

os.P_NOWAIT
os.P_NOWAITO

Các giá trị có thể có của tham số mode đối với họ hàm spawn*. Nếu một trong hai giá trị này được cung cấp, các hàm spawn* sẽ trả về ngay khi quy trình mới được tạo, với id quy trình là giá trị trả về.

sẵn có: Unix, Windows.

os.P_WAIT

Giá trị có thể có của tham số mode đối với nhóm hàm spawn*. Nếu giá trị này được đưa ra là mode, các hàm spawn* sẽ không trả về cho đến khi quy trình mới chạy đến khi hoàn thành và sẽ trả về mã thoát của quy trình mà quá trình chạy thành công hoặc -signal nếu tín hiệu giết chết quy trình.

sẵn có: Unix, Windows.

os.P_DETACH
os.P_OVERLAY

Các giá trị có thể có của tham số mode đối với họ hàm spawn*. Những thứ này ít di động hơn những thứ được liệt kê ở trên. P_DETACH tương tự như P_NOWAIT, nhưng quy trình mới được tách ra khỏi bảng điều khiển của quy trình gọi. Nếu sử dụng P_OVERLAY, quy trình hiện tại sẽ được thay thế; chức năng spawn* sẽ không trở lại.

sẵn có: Windows.

os.startfile(path[, operation][, arguments][, cwd][, show_cmd])

Bắt đầu một tập tin với ứng dụng liên quan của nó.

Khi operation không được chỉ định, thao tác này hoạt động giống như bấm đúp vào tệp trong Windows Explorer hoặc đặt tên tệp làm đối số cho lệnh start từ trình bao lệnh tương tác: tệp được mở bằng bất kỳ ứng dụng nào (nếu có) phần mở rộng của nó được liên kết.

Khi một operation khác được đưa ra, nó phải là một "động từ lệnh" chỉ định những gì nên làm với tệp. Các động từ phổ biến được Microsoft ghi lại là 'open', 'print''edit' (được sử dụng trên các tệp) cũng như 'explore''find' (được sử dụng trên các thư mục).

Khi khởi chạy một ứng dụng, hãy chỉ định arguments được truyền dưới dạng một chuỗi. Đối số này có thể không có tác dụng khi sử dụng chức năng này để khởi chạy tài liệu.

Thư mục làm việc mặc định được kế thừa nhưng có thể bị ghi đè bởi đối số cwd. Đây phải là một con đường tuyệt đối. Một path tương đối sẽ được giải quyết theo lập luận này.

Sử dụng show_cmd để ghi đè kiểu cửa sổ mặc định. Việc này có ảnh hưởng gì hay không sẽ phụ thuộc vào ứng dụng được khởi chạy. Giá trị là số nguyên được hỗ trợ bởi hàm Win32 ShellExecute().

startfile() quay trở lại ngay khi ứng dụng liên quan được khởi chạy. Không có tùy chọn chờ ứng dụng đóng và không có cách nào để truy xuất trạng thái thoát của ứng dụng. Tham số path có liên quan đến thư mục hiện tại hoặc cwd. Nếu bạn muốn sử dụng đường dẫn tuyệt đối, hãy đảm bảo ký tự đầu tiên không phải là dấu gạch chéo ('/') Sử dụng hàm pathlib hoặc os.path.normpath() để đảm bảo rằng đường dẫn được mã hóa chính xác cho Win32.

Để giảm chi phí khởi động trình thông dịch, hàm Win32 ShellExecute() không được giải quyết cho đến khi hàm này được gọi lần đầu tiên. Nếu chức năng không thể được giải quyết, NotImplementedError sẽ được nâng lên.

Tăng một auditing event os.startfile với các đối số path, operation.

Tăng một auditing event os.startfile/2 với các đối số path, operation, arguments, cwd, show_cmd.

sẵn có: Windows.

Thay đổi trong phiên bản 3.10: Đã thêm các đối số arguments, cwdshow_cmd cũng như sự kiện kiểm tra os.startfile/2.

os.system(command)

Thực thi lệnh (một chuỗi) trong một khung con. Điều này được thực hiện bằng cách gọi hàm Standard C là system() và có những hạn chế tương tự. Các thay đổi đối với sys.stdin, v.v. không được phản ánh trong môi trường của lệnh được thực thi. Nếu command tạo ra bất kỳ đầu ra nào, nó sẽ được gửi đến luồng đầu ra tiêu chuẩn của trình thông dịch. Tiêu chuẩn C không chỉ định ý nghĩa giá trị trả về của hàm C, do đó giá trị trả về của hàm Python phụ thuộc vào hệ thống.

Trên Unix, giá trị trả về là trạng thái thoát của quá trình được mã hóa theo định dạng được chỉ định cho wait().

Trên Windows, giá trị trả về là giá trị được shell hệ thống trả về sau khi chạy command. Shell được cung cấp bởi biến môi trường Windows COMSPEC: nó thường là cmd.exe, trả về trạng thái thoát khi chạy lệnh; trên các hệ thống sử dụng shell không phải gốc, hãy tham khảo tài liệu shell của bạn.

Mô-đun subprocess cung cấp các phương tiện mạnh mẽ hơn để tạo ra các quy trình mới và truy xuất kết quả của chúng; nên sử dụng mô-đun đó để sử dụng chức năng này. Xem phần Thay thế các chức năng cũ hơn bằng Mô-đun subprocess trong tài liệu subprocess để biết một số công thức nấu ăn hữu ích.

Trên Unix, waitstatus_to_exitcode() có thể được sử dụng để chuyển đổi kết quả (trạng thái thoát) thành mã thoát. Trên Windows, kết quả trực tiếp là mã thoát.

Tăng một auditing event os.system với đối số command.

sẵn có: Unix, Windows, not WASI, not Android, not iOS.

os.times()

Trả về thời gian xử lý toàn cầu hiện tại. Giá trị trả về là một đối tượng có năm thuộc tính:

  • user - thời gian của người dùng

  • system - thời gian hệ thống

  • children_user - thời gian người dùng của tất cả các tiến trình con

  • children_system - thời gian hệ thống của tất cả các tiến trình con

  • elapsed - đã trôi qua theo thời gian thực kể từ một điểm cố định trong quá khứ

Để tương thích ngược, đối tượng này cũng hoạt động giống như một bộ năm chứa user, system, children_user, children_systemelapsed theo thứ tự đó.

Xem trang hướng dẫn sử dụng Unix times(2)times(3) trên Unix hoặc the GetProcessTimes MSDN trên Windows. Trên Windows, chỉ biết usersystem; các thuộc tính khác bằng không.

sẵn có: Unix, Windows.

Thay đổi trong phiên bản 3.3: Kiểu trả về đã thay đổi từ một bộ dữ liệu thành một đối tượng giống bộ dữ liệu với các thuộc tính được đặt tên.

os.wait()

Đợi hoàn thành một tiến trình con và trả về một bộ dữ liệu chứa pid và chỉ báo trạng thái thoát của nó: một số 16 bit, có byte thấp là số tín hiệu đã giết chết tiến trình và byte cao của nó là trạng thái thoát (nếu số tín hiệu bằng 0); bit cao của byte thấp được đặt nếu tệp lõi được tạo.

Nếu không có đứa trẻ nào có thể chờ đợi được, ChildProcessError sẽ được nâng lên.

waitstatus_to_exitcode() có thể được sử dụng để chuyển trạng thái thoát thành mã thoát.

sẵn có: Unix, not WASI, not Android, not iOS.

Xem thêm

Các hàm wait*() khác được ghi lại bên dưới có thể được sử dụng để chờ hoàn thành một quy trình con cụ thể và có nhiều tùy chọn hơn. waitpid() là phiên bản duy nhất có sẵn trên Windows.

os.waitid(idtype, id, options, /)

Chờ cho đến khi hoàn thành một tiến trình con.

idtype có thể là P_PID, P_PGID, P_ALL hoặc (trên Linux) P_PIDFD. Việc giải thích id phụ thuộc vào nó; xem mô tả cá nhân của họ.

options là sự kết hợp OR của các cờ. Cần có ít nhất một trong số WEXITED, WSTOPPED hoặc WCONTINUED; WNOHANGWNOWAIT là các cờ tùy chọn bổ sung.

Giá trị trả về là một đối tượng biểu thị dữ liệu chứa trong cấu trúc siginfo_t với các thuộc tính sau:

  • si_pid (ID tiến trình)

  • si_uid (ID người dùng thực của trẻ)

  • si_signo (luôn luôn là SIGCHLD)

  • si_status (trạng thái thoát hoặc số tín hiệu, tùy thuộc vào si_code)

  • si_code (xem CLD_EXITED để biết các giá trị có thể)

Nếu WNOHANG được chỉ định và không có con nào phù hợp ở trạng thái được yêu cầu, None sẽ được trả về. Ngược lại, nếu không có con nào phù hợp có thể chờ đợi, ChildProcessError sẽ được nâng lên.

sẵn có: Unix, not WASI, not Android, not iOS.

Added in version 3.3.

Thay đổi trong phiên bản 3.13: Chức năng này hiện cũng có sẵn trên macOS.

os.waitpid(pid, options, /)

Chi tiết về chức năng này khác nhau trên Unix và Windows.

Trên Unix: Đợi quá trình con được cung cấp bởi id tiến trình pid hoàn thành và trả về một bộ dữ liệu chứa id tiến trình của nó và chỉ báo trạng thái thoát (được mã hóa như đối với wait()). Ngữ nghĩa của cuộc gọi bị ảnh hưởng bởi giá trị của số nguyên options, số nguyên này phải là 0 để hoạt động bình thường.

Nếu pid lớn hơn 0, waitpid() sẽ yêu cầu thông tin trạng thái cho quy trình cụ thể đó. Nếu pid0, yêu cầu dành cho trạng thái của bất kỳ thành phần con nào trong nhóm quy trình của quy trình hiện tại. Nếu pid-1, yêu cầu sẽ liên quan đến bất kỳ tiến trình con nào của quy trình hiện tại. Nếu pid nhỏ hơn -1, trạng thái sẽ được yêu cầu cho bất kỳ quy trình nào trong nhóm quy trình -pid (giá trị tuyệt đối của pid).

options là sự kết hợp OR của các cờ. Nếu nó chứa WNOHANG và không có con nào phù hợp ở trạng thái được yêu cầu, thì (0, 0) sẽ được trả về. Ngược lại, nếu không có con nào phù hợp có thể chờ đợi, ChildProcessError sẽ được nâng lên. Các tùy chọn khác có thể được sử dụng là WUNTRACEDWCONTINUED.

Trên Windows: Đợi quá trình được xử lý bởi trình xử lý pid hoàn tất và trả về một bộ dữ liệu chứa pid, đồng thời trạng thái thoát của nó dịch chuyển sang trái 8 bit (việc dịch chuyển giúp việc sử dụng hàm đa nền tảng dễ dàng hơn). Một pid nhỏ hơn hoặc bằng 0 không có ý nghĩa đặc biệt nào trên Windows và sẽ gây ra một ngoại lệ. Giá trị của số nguyên options không có hiệu lực. pid có thể đề cập đến bất kỳ quy trình nào có id được biết, không nhất thiết phải là quy trình con. Các hàm spawn* được gọi bằng P_NOWAIT trả về các bộ xử lý quy trình phù hợp.

waitstatus_to_exitcode() có thể được sử dụng để chuyển trạng thái thoát thành mã thoát.

sẵn có: Unix, Windows, not WASI, not Android, not iOS.

Thay đổi trong phiên bản 3.5: Nếu lệnh gọi hệ thống bị gián đoạn và trình xử lý tín hiệu không đưa ra ngoại lệ thì hàm này sẽ thử lại lệnh gọi hệ thống thay vì đưa ra ngoại lệ InterruptedError (xem PEP 475 để biết lý do).

os.wait3(options)

Tương tự như waitpid(), ngoại trừ không có đối số id tiến trình nào được đưa ra và một bộ dữ liệu gồm 3 phần tử chứa id tiến trình con, chỉ báo trạng thái thoát và thông tin sử dụng tài nguyên được trả về. Tham khảo resource.getrusage() để biết chi tiết về thông tin sử dụng tài nguyên. Đối số options giống với đối số được cung cấp cho waitpid()wait4().

waitstatus_to_exitcode() có thể được sử dụng để chuyển trạng thái thoát thành mã thoát.

sẵn có: Unix, not WASI, not Android, not iOS.

os.wait4(pid, options)

Tương tự như waitpid(), ngoại trừ bộ dữ liệu 3 phần tử, chứa id tiến trình con, chỉ báo trạng thái thoát và thông tin sử dụng tài nguyên được trả về. Tham khảo resource.getrusage() để biết chi tiết về thông tin sử dụng tài nguyên. Các đối số cho wait4() giống với các đối số được cung cấp cho waitpid().

waitstatus_to_exitcode() có thể được sử dụng để chuyển trạng thái thoát thành mã thoát.

sẵn có: Unix, not WASI, not Android, not iOS.

os.P_PID
os.P_PGID
os.P_ALL
os.P_PIDFD

Đây là những giá trị có thể có cho idtype trong waitid(). Chúng ảnh hưởng đến cách giải thích id:

  • P_PID - đợi đứa trẻ có PID là id.

  • P_PGID - đợi bất kỳ đứa trẻ nào có ID nhóm tiến trình là id.

  • P_ALL - đợi bất kỳ đứa trẻ nào; id bị bỏ qua.

  • P_PIDFD - đợi con được xác định bởi bộ mô tả tệp id (một bộ mô tả tệp quy trình được tạo bằng pidfd_open()).

sẵn có: Unix, not WASI, not Android, not iOS.

Ghi chú

P_PIDFD chỉ có trên Linux >= 5.4.

Added in version 3.3.

Added in version 3.9: Hằng số P_PIDFD.

os.WCONTINUED

Cờ options này cho waitpid(), wait3(), wait4()waitid() khiến các tiến trình con được báo cáo nếu chúng được tiếp tục từ điểm dừng kiểm soát công việc kể từ khi chúng được báo cáo lần cuối.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WEXITED

Cờ options dành cho waitid() này khiến các tiến trình con đã chấm dứt được báo cáo.

Các hàm wait* khác luôn báo cáo các phần tử con đã chấm dứt, vì vậy tùy chọn này không có sẵn cho chúng.

sẵn có: Unix, not WASI, not Android, not iOS.

Added in version 3.3.

os.WSTOPPED

Cờ options dành cho waitid() này khiến các tiến trình con đã bị dừng do việc gửi tín hiệu được báo cáo.

Tùy chọn này không có sẵn cho các chức năng wait* khác.

sẵn có: Unix, not WASI, not Android, not iOS.

Added in version 3.3.

os.WUNTRACED

Cờ options này cho waitpid(), wait3()wait4() khiến các tiến trình con cũng được báo cáo nếu chúng đã bị dừng nhưng trạng thái hiện tại của chúng chưa được báo cáo kể từ khi chúng bị dừng.

Tùy chọn này không có sẵn cho waitid().

sẵn có: Unix, not WASI, not Android, not iOS.

os.WNOHANG

Cờ options này khiến waitpid(), wait3(), wait4()waitid() quay trở lại ngay lập tức nếu không có trạng thái tiến trình con nào ngay lập tức.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WNOWAIT

Cờ options này khiến waitid() để trạng thái con ở trạng thái chờ, do đó lệnh gọi wait*() sau đó có thể được sử dụng để truy xuất lại thông tin trạng thái con.

Tùy chọn này không có sẵn cho các chức năng wait* khác.

sẵn có: Unix, not WASI, not Android, not iOS.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

Đây là các giá trị có thể có cho si_code trong kết quả được trả về bởi waitid().

sẵn có: Unix, not WASI, not Android, not iOS.

Added in version 3.3.

Thay đổi trong phiên bản 3.9: Đã thêm giá trị CLD_KILLEDCLD_STOPPED.

os.waitstatus_to_exitcode(status)

Chuyển đổi trạng thái chờ thành mã thoát.

Trên Unix:

  • Nếu quá trình thoát bình thường (nếu WIFEXITED(status) là đúng), trả về trạng thái thoát quá trình (trả về WEXITSTATUS(status)): kết quả lớn hơn hoặc bằng 0.

  • Nếu quá trình bị chấm dứt bởi một tín hiệu (nếu WIFSIGNALED(status) là đúng), hãy trả về -signum trong đó signum là số tín hiệu khiến quá trình kết thúc (trả về -WTERMSIG(status)): kết quả nhỏ hơn 0.

  • Nếu không, hãy tăng ValueError.

Trên Windows, trả về status dịch sang phải 8 bit.

Trên Unix, nếu quá trình đang được theo dõi hoặc nếu waitpid() được gọi với tùy chọn WUNTRACED, thì trước tiên người gọi phải kiểm tra xem WIFSTOPPED(status) có đúng không. Hàm này không được gọi nếu WIFSTOPPED(status) là đúng.

sẵn có: Unix, Windows, not WASI, not Android, not iOS.

Added in version 3.9.

Các hàm sau lấy mã trạng thái quy trình được trả về bởi system(), wait() hoặc waitpid() làm tham số. Chúng có thể được sử dụng để xác định cách bố trí của một quá trình.

os.WCOREDUMP(status, /)

Trả về True nếu kết xuất lõi được tạo cho quy trình, nếu không thì trả về False.

Chức năng này chỉ nên được sử dụng nếu WIFSIGNALED() là đúng.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WIFCONTINUED(status)

Trả về True nếu một thành phần con bị dừng đã được tiếp tục bằng cách gửi SIGCONT (nếu quá trình này được tiếp tục từ một điểm dừng kiểm soát công việc), nếu không thì trả về False.

Xem tùy chọn WCONTINUED.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WIFSTOPPED(status)

Trả về True nếu quá trình bị dừng do gửi tín hiệu, nếu không thì trả về False.

WIFSTOPPED() chỉ trả về True nếu lệnh gọi waitpid() được thực hiện bằng tùy chọn WUNTRACED hoặc khi quá trình đang được theo dõi (xem ptrace(2)).

sẵn có: Unix, not WASI, not Android, not iOS.

os.WIFSIGNALED(status)

Trả về True nếu quá trình bị kết thúc bởi tín hiệu, nếu không thì trả về False.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WIFEXITED(status)

Trả về True nếu quá trình thoát ra kết thúc bình thường, nghĩa là bằng cách gọi exit() hoặc _exit() hoặc bằng cách quay lại từ main(); nếu không thì trả về False.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WEXITSTATUS(status)

Trả về trạng thái thoát quá trình.

Chức năng này chỉ nên được sử dụng nếu WIFEXITED() là đúng.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WSTOPSIG(status)

Trả lại tín hiệu khiến quá trình dừng lại.

Chức năng này chỉ nên được sử dụng nếu WIFSTOPPED() là đúng.

sẵn có: Unix, not WASI, not Android, not iOS.

os.WTERMSIG(status)

Trả về số tín hiệu khiến quá trình kết thúc.

Chức năng này chỉ nên được sử dụng nếu WIFSIGNALED() là đúng.

sẵn có: Unix, not WASI, not Android, not iOS.

Giao diện với bộ lập lịch

Các chức năng này kiểm soát cách một quá trình được hệ điều hành phân bổ thời gian CPU. Chúng chỉ có sẵn trên một số nền tảng Unix. Để biết thêm thông tin chi tiết, hãy tham khảo trang web Unix của bạn.

Added in version 3.3.

Các chính sách lập lịch sau đây sẽ được hiển thị nếu chúng được hệ điều hành hỗ trợ.

os.SCHED_OTHER

Chính sách lập lịch mặc định.

os.SCHED_BATCH

Chính sách lập lịch cho các quy trình sử dụng nhiều CPU cố gắng duy trì khả năng tương tác trên phần còn lại của máy tính.

os.SCHED_DEADLINE

Chính sách lập kế hoạch cho các nhiệm vụ có ràng buộc về thời hạn.

Added in version 3.14.

os.SCHED_IDLE

Chính sách lập lịch cho các tác vụ nền có mức độ ưu tiên cực thấp.

os.SCHED_NORMAL

Bí danh cho SCHED_OTHER.

Added in version 3.14.

os.SCHED_SPORADIC

Chính sách lập lịch cho các chương trình máy chủ rời rạc.

os.SCHED_FIFO

Chính sách lập kế hoạch vào trước ra trước.

os.SCHED_RR

Chính sách lập kế hoạch luân phiên.

os.SCHED_RESET_ON_FORK

Cờ này có thể được HOẶC với bất kỳ chính sách lập lịch nào khác. Khi một tiến trình có gắn cờ này phân nhánh, chính sách lập lịch và mức độ ưu tiên của tiến trình con của nó sẽ được đặt lại về mặc định.

class os.sched_param(sched_priority)

Lớp này đại diện cho các tham số lập lịch có thể điều chỉnh được sử dụng trong sched_setparam(), sched_setscheduler()sched_getparam(). Nó là bất biến.

Hiện tại, chỉ có một tham số khả thi:

sched_priority

Mức độ ưu tiên lập lịch cho chính sách lập lịch.

os.sched_get_priority_min(policy)

Nhận giá trị ưu tiên tối thiểu cho policy. policy là một trong những hằng số chính sách lập lịch ở trên.

os.sched_get_priority_max(policy)

Nhận giá trị ưu tiên tối đa cho policy. policy là một trong những hằng số chính sách lập lịch ở trên.

os.sched_setscheduler(pid, policy, param, /)

Đặt chính sách lập lịch cho quy trình với PID pid. Zz002zz bằng 0 nghĩa là quá trình gọi điện. policy là một trong những hằng số chính sách lập lịch ở trên. param là một phiên bản sched_param.

os.sched_getscheduler(pid, /)

Trả về chính sách lập lịch cho quy trình với PID pid. Zz001zz bằng 0 có nghĩa là quá trình gọi điện. Kết quả là một trong các hằng số chính sách lập kế hoạch ở trên.

os.sched_setparam(pid, param, /)

Đặt tham số lập lịch cho quy trình với PID pid. Zz002zz bằng 0 nghĩa là quá trình gọi điện. param là một phiên bản sched_param.

os.sched_getparam(pid, /)

Trả về các tham số lập lịch dưới dạng phiên bản sched_param cho quy trình với PID pid. Zz002zz bằng 0 nghĩa là quá trình gọi điện.

os.sched_rr_get_interval(pid, /)

Trả về lượng tử quay vòng sau vài giây cho quy trình với PID pid. Zz001zz bằng 0 có nghĩa là quá trình gọi điện.

os.sched_yield()

Tự nguyện từ bỏ CPU. Xem sched_yield(2) để biết chi tiết.

os.sched_setaffinity(pid, mask, /)

Hạn chế quy trình bằng PID pid (hoặc quy trình hiện tại nếu không) đối với một bộ CPU. mask là một tập hợp các số nguyên đại diện cho bộ CPU mà quy trình sẽ bị hạn chế.

os.sched_getaffinity(pid, /)

Trả về bộ CPU mà quy trình với PID pid bị hạn chế.

Nếu pid bằng 0, hãy trả về bộ CPU mà luồng gọi của quy trình hiện tại bị hạn chế.

Xem thêm chức năng process_cpu_count().

Thông tin hệ thống khác

os.confstr(name, /)

Trả về các giá trị cấu hình hệ thống có giá trị chuỗi. name chỉ định giá trị cấu hình cần truy xuất; nó có thể là một chuỗi là tên của một giá trị hệ thống được xác định; những tên này được chỉ định trong một số tiêu chuẩn (POSIX, Unix 95, Unix 98 và các tiêu chuẩn khác). Một số nền tảng cũng xác định tên bổ sung. Các tên mà hệ điều hành máy chủ biết đến được coi là khóa của từ điển confstr_names. Đối với các biến cấu hình không có trong ánh xạ đó, việc chuyển số nguyên cho name cũng được chấp nhận.

Nếu giá trị cấu hình được chỉ định bởi name không được xác định thì None sẽ được trả về.

Nếu name là một chuỗi và không được biết đến, ValueError sẽ được nâng lên. Nếu một giá trị cụ thể cho name không được hệ thống máy chủ hỗ trợ, ngay cả khi nó được bao gồm trong confstr_names, thì OSError sẽ được đưa ra cùng với errno.EINVAL cho số lỗi.

sẵn có: Unix.

os.confstr_names

Tên ánh xạ từ điển được confstr() chấp nhận thành các giá trị nguyên được xác định cho các tên đó bởi hệ điều hành máy chủ. Điều này có thể được sử dụng để xác định tập hợp các tên được hệ thống biết đến.

sẵn có: Unix.

os.cpu_count()

Trả về số lượng CPU logic trong system. Trả về None nếu không xác định được.

Hàm process_cpu_count() có thể được sử dụng để lấy số lượng CPU logic có thể sử dụng được bởi luồng gọi của current process.

Added in version 3.4.

Thay đổi trong phiên bản 3.13: Nếu -X cpu_count được cung cấp hoặc PYTHON_CPU_COUNT được đặt, cpu_count() trả về giá trị ghi đè n.

os.getloadavg()

Trả về số lượng quy trình trong hàng đợi chạy hệ thống được tính trung bình trong 1, 5 và 15 phút qua hoặc tăng OSError nếu không thể đạt được mức trung bình tải.

sẵn có: Unix.

os.process_cpu_count()

Lấy số lượng CPU logic có thể sử dụng được theo luồng gọi của current process. Trả về None nếu không xác định được. Nó có thể nhỏ hơn cpu_count() tùy thuộc vào mối quan hệ với CPU.

Hàm cpu_count() có thể được sử dụng để lấy số lượng CPU logic trong system.

Nếu -X cpu_count được cung cấp hoặc PYTHON_CPU_COUNT được đặt, process_cpu_count() trả về giá trị ghi đè n.

Xem thêm chức năng sched_getaffinity().

Added in version 3.13.

os.sysconf(name, /)

Trả về các giá trị cấu hình hệ thống có giá trị nguyên. Nếu giá trị cấu hình được chỉ định bởi name không được xác định thì -1 sẽ được trả về. Các nhận xét liên quan đến tham số name cho confstr() cũng được áp dụng ở đây; từ điển cung cấp thông tin về những cái tên đã biết được cung cấp bởi sysconf_names.

sẵn có: Unix.

os.sysconf_names

Tên ánh xạ từ điển được sysconf() chấp nhận thành các giá trị nguyên được xác định cho các tên đó bởi hệ điều hành máy chủ. Điều này có thể được sử dụng để xác định tập hợp các tên được hệ thống biết đến.

sẵn có: Unix.

Thay đổi trong phiên bản 3.11: Thêm tên 'SC_MINSIGSTKSZ'.

Các giá trị dữ liệu sau đây được sử dụng để hỗ trợ các hoạt động thao tác đường dẫn. Chúng được xác định cho tất cả các nền tảng.

Các hoạt động cấp cao hơn trên tên đường dẫn được xác định trong mô-đun os.path.

os.curdir

Chuỗi hằng được hệ điều hành sử dụng để chỉ thư mục hiện tại. Đây là '.' dành cho Windows và POSIX. Cũng có sẵn thông qua os.path.

os.pardir

Chuỗi hằng số được hệ điều hành sử dụng để tham chiếu đến thư mục mẹ. Đây là '..' dành cho Windows và POSIX. Cũng có sẵn thông qua os.path.

os.sep

Ký tự được hệ điều hành sử dụng để phân tách các thành phần tên đường dẫn. Đây là '/' dành cho POSIX và '\\' dành cho Windows. Lưu ý rằng việc biết điều này là không đủ để có thể phân tích cú pháp hoặc nối các tên đường dẫn --- sử dụng os.path.split()os.path.join() --- nhưng đôi khi nó cũng hữu ích. Cũng có sẵn thông qua os.path.

os.altsep

Một ký tự thay thế được hệ điều hành sử dụng để phân tách các thành phần tên đường dẫn hoặc None nếu chỉ tồn tại một ký tự phân tách. Điều này được đặt thành '/' trên hệ thống Windows trong đó sep là dấu gạch chéo ngược. Cũng có sẵn thông qua os.path.

os.extsep

Ký tự phân tách tên tệp cơ sở khỏi phần mở rộng; ví dụ: '.' trong os.py. Cũng có sẵn thông qua os.path.

os.pathsep

Ký tự thường được hệ điều hành sử dụng để phân tách các thành phần đường dẫn tìm kiếm (như trong PATH), chẳng hạn như ':' cho POSIX hoặc ';' cho Windows. Cũng có sẵn thông qua os.path.

os.defpath

Đường dẫn tìm kiếm mặc định được exec*p*spawn*p* sử dụng nếu môi trường không có khóa 'PATH'. Cũng có sẵn thông qua os.path.

os.linesep

Chuỗi được sử dụng để phân tách (hay nói đúng hơn là chấm dứt) các dòng trên nền tảng hiện tại. Đây có thể là một ký tự đơn, chẳng hạn như '\n' cho POSIX hoặc nhiều ký tự, ví dụ: '\r\n' cho Windows. Không sử dụng os.linesep làm dấu kết thúc dòng khi ghi tệp được mở ở chế độ văn bản (mặc định); thay vào đó hãy sử dụng một '\n' duy nhất trên tất cả các nền tảng.

os.devnull

Đường dẫn tập tin của thiết bị null. Ví dụ: '/dev/null' cho POSIX, 'nul' cho Windows. Cũng có sẵn thông qua os.path.

os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

Cờ để sử dụng với các chức năng setdlopenflags()getdlopenflags(). Xem trang hướng dẫn sử dụng Unix dlopen(3) để biết ý nghĩa của các cờ khác nhau.

Added in version 3.3.

Số ngẫu nhiên

os.getrandom(size, flags=0)

Nhận tối đa size byte ngẫu nhiên. Hàm có thể trả về ít byte hơn yêu cầu.

Các byte này có thể được sử dụng để tạo các trình tạo số ngẫu nhiên trong không gian người dùng hoặc cho mục đích mã hóa.

getrandom() dựa vào entropy được thu thập từ trình điều khiển thiết bị và các nguồn nhiễu môi trường khác. Việc đọc số lượng lớn dữ liệu một cách không cần thiết sẽ có tác động tiêu cực đến những người dùng khác của thiết bị /dev/random/dev/urandom.

Đối số cờ là một mặt nạ bit có thể chứa 0 hoặc nhiều giá trị sau HOẶC cùng nhau: os.GRND_RANDOMGRND_NONBLOCK.

Xem thêm Linux getrandom() manual page.

sẵn có: Linux >= 3.17.

Added in version 3.6.

os.urandom(size, /)

Trả về một chuỗi byte ngẫu nhiên size phù hợp cho việc sử dụng mật mã.

Hàm này trả về các byte ngẫu nhiên từ nguồn ngẫu nhiên dành riêng cho hệ điều hành. Dữ liệu trả về phải đủ khó dự đoán đối với các ứng dụng mật mã, mặc dù chất lượng chính xác của nó phụ thuộc vào việc triển khai hệ điều hành.

Trên Linux, nếu có sẵn tòa nhà chọc trời getrandom(), nó sẽ được sử dụng ở chế độ chặn: chặn cho đến khi nhóm entropy urandom hệ thống được khởi tạo (128 bit entropy được kernel thu thập). Xem PEP 524 để biết lý do. Trên Linux, hàm getrandom() có thể được sử dụng để lấy các byte ngẫu nhiên ở chế độ không chặn (sử dụng cờ GRND_NONBLOCK) hoặc để thăm dò cho đến khi nhóm entropy urandom của hệ thống được khởi tạo.

Trên hệ thống giống Unix, các byte ngẫu nhiên được đọc từ thiết bị /dev/urandom. Nếu thiết bị /dev/urandom không khả dụng hoặc không thể đọc được, ngoại lệ NotImplementedError sẽ xuất hiện.

Trên Windows, nó sẽ sử dụng BCryptGenRandom().

Xem thêm

Mô-đun secrets cung cấp các chức năng cấp cao hơn. Để có giao diện dễ sử dụng với trình tạo số ngẫu nhiên do nền tảng của bạn cung cấp, vui lòng xem random.SystemRandom.

Thay đổi trong phiên bản 3.5: Trên Linux 3.17 trở lên, tòa nhà getrandom() hiện được sử dụng khi khả dụng. Trên OpenBSD 5.6 trở lên, chức năng C getentropy() hiện đã được sử dụng. Các hàm này tránh sử dụng bộ mô tả tệp nội bộ.

Thay đổi trong phiên bản 3.5.2: Trên Linux, nếu tòa nhà getrandom() chặn (nhóm entropy urandom chưa được khởi tạo), hãy quay lại đọc /dev/urandom.

Thay đổi trong phiên bản 3.6: Trên Linux, getrandom() hiện được sử dụng ở chế độ chặn để tăng tính bảo mật.

Thay đổi trong phiên bản 3.11: Trên Windows, BCryptGenRandom() được sử dụng thay vì CryptGenRandom() không được dùng nữa.

os.GRND_NONBLOCK

Theo mặc định, khi đọc từ /dev/random, getrandom() sẽ chặn nếu không có byte ngẫu nhiên nào và khi đọc từ /dev/urandom, nó sẽ chặn nếu nhóm entropy chưa được khởi tạo.

Nếu cờ GRND_NONBLOCK được đặt thì getrandom() sẽ không chặn trong những trường hợp này mà thay vào đó sẽ ngay lập tức tăng BlockingIOError.

Added in version 3.6.

os.GRND_RANDOM

Nếu bit này được đặt thì các byte ngẫu nhiên sẽ được rút ra từ nhóm /dev/random thay vì nhóm /dev/urandom.

Added in version 3.6.