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
oskhô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()và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.
- 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.platformcó độ 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
platformcung 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_encoding và filesystem_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:
Sử dụng UTF-8 làm filesystem encoding.
sys.getfilesystemencoding()trả về'utf-8'.locale.getpreferredencoding()trả về'utf-8'(đối số do_setlocale không có hiệu lực).sys.stdin,sys.stdoutvàsys.stderrđều sử dụng UTF-8 làm mã hóa văn bản, vớisurrogateescapeerror handler được bật chosys.stdinvàsys.stdout(sys.stderrtiếp tục sử dụngbackslashreplacenhư trong chế độ nhận biết ngôn ngữ mặc định)Trên Unix,
os.device_encoding()trả về'utf-8'thay vì mã hóa thiết bị.
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()vàos.fsencode()sử dụng mã hóa UTF-8.open(),io.open()và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 Windows và filesystem 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ớigetenv("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 trongos.environ, ngoại trừ những thay đổi được thực hiện bằng cách sửa đổi trực tiếpos.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()và'surrogateescape'. Sử dụngenvironbnế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 đổios.environ, vì vậy tốt hơn là sửa đổios.environ.Ghi chú
Trên một số nền tảng, bao gồm FreeBSD và macOS, cài đặt
environcó thể gây rò rỉ bộ nhớ. Tham khảo tài liệu hệ thống dành choputenv().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ỏios.environvà khi một trong các phương thứcpop()hoặcclear()đượ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ượngbytesđại diện cho môi trường quy trình.environvàenvironbđược đồng bộ hóa (sửa đổienvironbcập nhậtenvironvà ngược lại).environbchỉ khả dụng nếusupports_bytes_environlàTrue.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.environvàos.environblà 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ởios.putenv()hoặcos.unsetenv(). Sử dụngos.reload_environ()để cập nhậtos.environvàos.environbvớ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.environhoặcos.environbhoặc gọios.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ề
byteskhô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ề
strkhô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
strhoặcbytesđượ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ượngstrhoặcbytes. 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.
- 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ụngos.environnên ánh xạ củagetenv()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()và'surrogateescape'. Sử dụngos.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ụngos.environbnên ánh xạ củagetenvb()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ếusupports_bytes_environlàTrue.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 env là
None,environsẽ đượ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.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.5trở 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ớisetgroups()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ơn10.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 đếnsetgroups()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ằngsysconfig.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ườngLOGNAMEhoặcUSERNAMEđể tìm ra người dùng là ai và quay lạipwd.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.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_PGRPhoặcPRIO_USERvà who được diễn giải liên quan đến which (mã định danh quy trình choPRIO_PROCESS, mã định danh nhóm quy trình choPRIO_PGRPvà ID người dùng choPRIO_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()và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()và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ặcfork()vàexecv().Việc gán cho các mục trong
os.environsẽ tự động được dịch sang các lệnh gọi tương ứng tớiputenv(); tuy nhiên, các lệnh gọi tớiputenv()không cập nhậtos.environ, vì vậy thực tế tốt hơn là gán cho các mục củaos.environ. Điều này cũng áp dụng chogetenv()vàgetenvb(), tương ứng sử dụngos.environvàos.environbtrong 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
environcó thể gây rò rỉ bộ nhớ. Tham khảo tài liệu hệ thống dành choputenv().Tăng một auditing event
os.putenvvớ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.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) và 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 (0có 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ặcsetpgrp(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_PGRPhoặcPRIO_USERvà who được diễn giải liên quan đến which (mã định danh quy trình choPRIO_PROCESS, mã định danh nhóm quy trình choPRIO_PGRPvà ID người dùng choPRIO_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.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ềNULLkhi có số lỗi không xác định,ValueErrorsẽ được nâng lên.
- os.supports_bytes_environ¶
Truenếu loại hệ điều hành gốc của môi trường là byte (ví dụ:Falsetrê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ànhnodename- tên máy trên mạng (do triển khai xác định)release- phát hành hệ điều hànhversion- phiên bản hệ điều hànhmachine- 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,versionvàmachinetheo thứ tự đó.Một số hệ thống cắt ngắn
nodenamethà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ặcfork()vàexecv().Việc xóa các mục trong
os.environsẽ tự động được dịch thành lệnh gọi tương ứng tớiunsetenv(); tuy nhiên, các lệnh gọi tớiunsetenv()không cập nhậtos.environ, vì vậy thực tế tốt hơn là xóa các mục củaos.environ.Xem thêm chức năng
os.reload_environ().Tăng một auditing event
os.unsetenvvớ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.
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ố flags là
0thì 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().
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.)
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.
- 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_src là
Nonethì 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 src và dst phải nằm trong cùng một hệ thống tệp, nếu không thì
OSErrorsẽ được nâng lên vớierrnođược đặt thànherrno.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 inheritable là
False.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,
Noneluô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ớios.chmod(fd, mode).Tăng một auditing event
os.chmodvớ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ố uid và gid. Để 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ớios.chown(fd, uid, gid).Tăng một auditing event
os.chownvớ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,
ValueErrorsẽ đượ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 trongpathconf_names, thìOSErrorsẽ được đưa ra cùng vớierrno.EINVALcho 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ớios.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ệnos.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.truncatevớ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:
Falsenếu cờO_NONBLOCKđược đặt,Truenếu cờ bị xóa.Xem thêm
set_blocking()và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ề
Truenế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_ULOCKhoặcF_TEST. len chỉ định phần file cần khóa.Tăng một auditing event
os.lockfvớ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_SEThoặc0- đặt pos tương ứng với phần đầu của tệpSEEK_CURhoặc1- đặt pos tương ứng với vị trí tệp hiện tạiSEEK_ENDhoặc2- đặt pos tương ứng với phần cuối của tệpSEEK_HOLE-- đặt pos vào vị trí dữ liệu tiếp theo, liên quan đến posSEEK_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_HOLEvàSEEK_DATA.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Các tham số cho hàm
lseek()và phương thứcseek()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ứcseek()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_RDONLYvàO_WRONLY) được xác định trong mô-đunos. Đặc biệt, trên Windows cần thêmO_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
openvớ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ứcread()vàwrite(). Để bọc bộ mô tả tệp trong một đối tượng tệp, hãy sử dụngfdopen().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_SYMLINK¶
- 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_SYMLINKvàO_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.
- 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ô-đunpty.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_WILLNEEDhoặcPOSIX_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ụngposix_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_CLOEXECcó 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()và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ề
-1và đặt errno thànherrno.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 Cptsname(), 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()và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_DSYNCos.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_SYNCos.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_APPENDos.open(). Cờ này chỉ có ý nghĩa đối vớios.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 là-1thì 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ặcpipe(). Để đọc một "đối tượng tệp" được hàm dựng sẵnopen()hoặcpopen()hoặcfdopen()hoặcsys.stdintrả về, hãy sử dụng các phương thứcread()hoặcreadline()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ặcos.pipe(). Để đọc "đối tượng tệp" được trả về bởi hàm dựng sẵnopen()hoặcsys.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ặcio.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à
Nonethì 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 đó headers và trailers 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ị
0cho 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, trailers và flags.
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 xemsocket.socket.sendfile().Added in version 3.3.
Thay đổi trong phiên bản 3.9: Các thông số out và in được đổi tên thành out_fd và in_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_NONBLOCKnếu chặn làFalse, xóa cờ nếu không.Xem thêm
get_blocking()và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_src là
Nonethì 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 src và dst phải nằm trong cùng một hệ thống tệp, nếu không thìOSErrorsẽ được tạo ra vớierrnođược đặt thànherrno.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.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ặcpipe(). Để viết một "đối tượng tệp" được hàm dựng sẵnopen()hoặcpopen()hoặcfdopen()hoặcsys.stdouthoặcsys.stderrtrả về, hãy sử dụng phương thứcwrite()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ạiterminal_size.Đối số tùy chọn
fd(STDOUT_FILENOmặ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,
OSErrorsẽ đượ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_sizelà chức năng cấp thấp.sẵn có: Unix, Windows.
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_fds là False.
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.
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
osphả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ọifchdirthay 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 raNotImplementedError.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ốatvà có thể có tiền tố làf(ví dụ: gọifaccessatthay 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 raNotImplementedError.
not following symlinks: Nếu follow_symlinks là
Falsevà phần tử cuối cùng của đường dẫn thao tác là một liên kết tượng trưng, thì hàm sẽ hoạt động trên chính liên kết tượng trưng chứ không phải tệp được liên kết trỏ tới. Đối với các hệ thống POSIX, Python sẽ gọi biến thểl...của hàm.Bạn có thể kiểm tra xem follow_symlinks 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_follow_symlinks. Nếu không có sẵn, việc sử dụng nó sẽ tạo raNotImplementedError.
- 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ềuR_OK,W_OKvàX_OKđể kiểm tra quyền. Trả vềTruenếu quyền truy cập được cho phép,Falsenế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 descriptors và not following symlinks.
Nếu effective_ids là
True,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ằngos.supports_effective_ids. Nếu không có sẵn, việc sử dụng nó sẽ tạo raNotImplementedError.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ụngopen()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") là 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_ids và follow_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
OSErrorvà các lớp con nhưFileNotFoundError,PermissionErrorvàNotADirectoryError.Tăng một auditing event
os.chdirvớ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.chflagsvớ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 descriptors và not 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_IWRITEvàstat.S_IREADhoặ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_symlinks làFalsetrê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.chmodvớ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_fd và follow_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 uid và gid 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 descriptors và not 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.chownvớ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_fd và follow_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.chdirvớ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ớios.chflags(path, flags, follow_symlinks=False).Tăng một auditing event
os.chflagsvớ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ớios.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.chmodvớ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 uid và gid 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.chownvớ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.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
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 descriptors và not following symlinks. Giá trị mặc định của follow_symlinks là
Falsetrên Windows.Tăng một auditing event
os.linkvớ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_fd và follow_symlinks.
Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho src và dst.
- 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
'.'và'..'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ệnPathLike), tên tệp được trả về cũng sẽ thuộc loạibytes; trong mọi trường hợp khác, chúng sẽ thuộc loạistr.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.listdirvới đối sốpath.Ghi chú
Để mã hóa tên tệp
strthànhbytes, hãy sử dụngfsencode().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
OSErrornếu xảy ra lỗi khi thu thập tên ổ đĩa.Tăng auditing event
os.listdrivesmà 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
OSErrornế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.listmountsvớ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ằngos.listmounts().Có thể tăng
OSErrornếu xảy ra lỗi khi thu thập tập.Tăng auditing event
os.listvolumesmà 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ượngstat_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,
FileExistsErrorsẽ được nâng lên. Nếu thư mục mẹ trong đường dẫn không tồn tại,FileNotFoundErrorsẽ đượ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ô-đuntempfile.Tăng một auditing event
os.mkdirvớ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ọimakedirs(). 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_ok là
False(mặc định),FileExistsErrorsẽ đượ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ồmpardir(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.mkdirvớ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_ok là
Truevà 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ằngmkfifo()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_IFBLKvàstat.S_IFIFO(các hằng số đó có sẵn trongstat). Đối vớistat.S_IFCHRvàstat.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ụngos.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_devhoặcst_rdevtừ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_devhoặcst_rdevtừ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,
ValueErrorsẽ đượ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 trongpathconf_names, thìOSErrorsẽ được đưa ra cùng vớierrno.EINVALcho 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()và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.
- os.readlink(path, *, dir_fd=None)¶
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ì
OSErrorsẽ được nâng lên. Sử dụngrmdir()để xóa thư mục. Nếu tệp không tồn tại,FileNotFoundErrorsẽ 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.removevớ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'và'foo'nếu chúng trống. TăngOSErrornếu thư mục lá không thể xóa thành công.Tăng một auditing event
os.removevớ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
OSErrortrong một số trường hợp:Trên Windows, nếu dst tồn tại thì
FileExistsErrorluôn được nâng lên. Thao tác có thể thất bại nếu src và dst nằm trên các hệ thống tệp khác nhau. Sử dụngshutil.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,
IsADirectoryErrorhoặcNotADirectoryErrorsẽ đượ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ìOSErrorsẽ đượ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 src và dst 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.renamevớ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_fd và dst_dir_fd.
Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho src và dst.
- 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ằngremovedirs().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.renamevớ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 old và new.
- 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,
OSErrorsẽ đượ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 src và dst 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.renamevớ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 src và dst.
- 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,
FileNotFoundErrorhoặcOSErrorsẽ được nâng lên tương ứng. Để xóa toàn bộ cây thư mục, có thể sử dụngshutil.rmtree().Chức năng này có thể hỗ trợ paths relative to directory descriptors.
Tăng một auditing event
os.rmdirvớ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.DirEntrytươ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'.'và'..'. 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ượngos.DirEntryhiể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ứcos.DirEntrycó thể thực hiện lệnh gọi hệ thống, nhưngis_dir()và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ệnPathLike), loại thuộc tínhnamevàpathcủa mỗios.DirEntrysẽ làbytes; trong mọi trường hợp khác, chúng sẽ thuộc loạistr.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.scandirvớ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ọientry.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) là: để vào trong đó: nếu không phải là entry.name.startswith('.') và 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() và readdir() của hệ thống. Trên Windows, nó sử dụng chức năng Win32 FindFirstFileW và FindNextFileW.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ặpscandir()chưa hết hoặc chưa được đóng rõ ràng thìResourceWarningsẽ đượ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ốngstat()hoặclstat()được thực hiện, đối tượngos.DirEntrysẽ lưu kết quả vào bộ đệm.Các phiên bản
os.DirEntrykhô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ọiscandir(), hãy gọios.stat(entry.path)để tìm nạp thông tin cập nhật.Vì các phương thức
os.DirEntrycó thể thực hiện lệnh gọi hệ điều hành nên chúng cũng có thể tăngOSError. 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ặpOSErrorkhi gọi một trong các phương thứcos.DirEntryvà 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.DirEntrytriển khai giao diệnPathLike.Các thuộc tính và phương thức trên phiên bản
os.DirEntrynhư 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
namesẽ làbytesnếu đối sốscandir()path thuộc loạibytesvàstrnếu ngược lại. Sử dụngfsdecode()để 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()path là file descriptor thì thuộc tínhpathgiống với thuộc tínhname.Thuộc tính
pathsẽ làbytesnếu đối sốscandir()path thuộc loạibytesvàstrnếu ngược lại. Sử dụngfsdecode()để 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ụngos.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ề
Truenế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ềFalsenế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_symlinks là
False, chỉ trả vềTruenế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ềFalsenế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_symlinksTruevàFalse. Gọios.stat()cùng vớistat.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_symlinks làFalse.Phương pháp này có thể tăng
OSError, chẳng hạn nhưPermissionError, nhưngFileNotFoundErrorbị bắt và không được nâng lên.
- is_file(*, follow_symlinks=True)¶
Trả về
Truenế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ềFalsenế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_symlinks là
False, chỉ trả vềTruenế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ềFalsenế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 theois_dir().
- is_symlink()¶
Trả về
Truenếu mục này là một liên kết tượng trưng (ngay cả khi bị hỏng); trả vềFalsenế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ọios.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ưngFileNotFoundErrorbị bắt và không được nâng lên.
- is_junction()¶
Trả về
Truenếu mục này là một điểm nối (ngay cả khi bị hỏng); trả vềFalsenế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ọios.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_resultcho 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_symlinks là
Truevà 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_devvàst_nlinkcủastat_resultluôn được đặt thành 0. Gọios.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_symlinksTruevàFalse. Gọios.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.DirEntryvàpathlib.Path. Đặc biệt, thuộc tínhnamecó ý nghĩa tương tự, cũng như các phương thứcis_dir(),is_file(),is_symlink(),is_junction()và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ẫnbytestrên Windows.Thay đổi trong phiên bản 3.12: Thuộc tính
st_ctimecủ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_birthtimevà trong tương laist_ctimecó 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ệnPathLike-- hoặc dưới dạng bộ mô tả tệp mở. Trả về một đối tượngstat_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=Falsehoặc sử dụnglstat().Chức năng này có thể hỗ trợ specifying a file descriptor và not following symlinks.
Trên Windows, việc chuyển
follow_symlinks=Falsesẽ 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àmos.path.realpath()để phân giải tên đường dẫn nhiều nhất có thể và gọilstat()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
Thay đổi trong phiên bản 3.3: Đã thêm tham số dir_fd và follow_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=Falsesẽ 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ủaos.stat(),os.fstat()và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:số inode trên Unix,
file index trên Windows
- st_dev¶
Mã định danh của thiết bị chứa tệp này.
- st_nlink¶
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_ctimekhông được dùng nữa trên Windows. Sử dụngst_birthtimecho thời gian tạo tập tin. Trong tương lai,st_ctimesẽ 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_nskhông được dùng nữa trên Windows. Sử dụngst_birthtime_nscho thời gian tạo tập tin. Trong tương lai,st_ctimesẽ 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_birthtimehiệ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_ctimevàst_birthtimephụ 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_mtimecó độ phân giải 2 giây vàst_atimechỉ 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_nsvàst_birthtime_nsluô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_ctimevàst_birthtimekhô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ụngst_atime_ns,st_mtime_ns,st_ctime_nsvàst_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
dwFileAttributescủa cấu trúcBY_HANDLE_FILE_INFORMATIONđược trả về bởiGetFileInformationByHandle(). Xem hằng sốFILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>trong mô-đunstat.Added in version 3.5.
- st_reparse_tag¶
Khi
st_file_attributesđược đặtFILE_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ô-đunstat.
Mô-đun tiêu chuẩn
statxác định các hàm và hằng số hữu ích để trích xuất thông tin từ cấu trúcstat. (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_resultcũ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úcstat, 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ậpstat_resultdướ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_inokhi có sẵn.Thay đổi trong phiên bản 3.7: Đã thêm thành viên
st_fstypevà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_tagtrên Windows.Thay đổi trong phiên bản 3.8: Trên Windows, thành viên
st_modehiện xác định các tệp đặc biệt làS_IFCHR,S_IFIFOhoặcS_IFBLKnếu thích hợp.Thay đổi trong phiên bản 3.12: Trên Windows,
st_ctimekhô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ụngst_birthtimecho thời gian tạo.Trên Windows,
st_inohiệ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_rdevkhô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_birthtimetrê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úcstatvfs, 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ếuST_RDONLYđược đặt, hệ thống tệp sẽ được gắn ở chế độ chỉ đọc và nếuST_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_RDONLYvàST_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_NODIRATIMEvàST_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
setcho biết chức năng nào trong mô-đunoschấ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ỉ địnhNonecho 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ử
intrênsupports_dir_fd. Ví dụ: biểu thức này đánh giá làTruenếuos.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
setcho biết liệuos.access()có cho phép chỉ địnhTruecho tham số effective_ids của nó trên nền tảng cục bộ hay không. (Chỉ địnhFalsecho 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ứaos.access(); nếu không nó sẽ trống rỗng.Biểu thức này đánh giá thành
Truenếuos.access()hỗ trợeffective_ids=Truetrê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
setcho biết chức năng nào trong mô-đunoscho 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ử
intrênsupports_fd. Ví dụ: biểu thức này đánh giá làTruenếuos.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.
- os.supports_follow_symlinks¶
Đối tượng
setcho biết chức năng nào trong mô-đunoschấp nhậnFalsecho 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ỉ địnhTruecho 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
Falsecho tham số follow_symlinks của nó hay không, hãy sử dụng toán tửintrênsupports_follow_symlinks. Ví dụ: biểu thức này ước tính làTruenếu bạn có thể chỉ địnhfollow_symlinks=Falsekhi gọios.stat()trên nền tảng cục bộ:os.stat trong os.supports_follow_symlinks
Added in version 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
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_directory là
Truehoặ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.symlinkvớ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 src và dst.
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.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.truncatevớ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.
- os.unlink(path, *, dir_fd=None)¶
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ênunlinklà tên Unix truyền thống của nó. Vui lòng xem tài liệu dành choremove()để biết thêm thông tin.Tăng một auditing event
os.removevớ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à times và ns. 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à
Nonethì 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 times là
Nonevà ns không được chỉ định, điều này tương đương với việc chỉ địnhns=(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ả times và ns.
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; xemstat(). 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_ns và st_mtime_ns từ đối tượng kết quảos.stat()với tham số ns làutime().Chức năng này có thể hỗ trợ specifying a file descriptor, paths relative to directory descriptors và not following symlinks.
Tăng một auditing event
os.utimevớ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_symlinks và ns.
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
'.'và'..'). 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ệnos.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 topdown là
Truehoặ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 topdown làFalse, 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 topdown là
True, người gọi có thể sửa đổi danh sách dirnames tại chỗ (có thể sử dụngdelhoặ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 chowalk()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ạiwalk(). Việc sửa đổi dirnames khi topdown làFalsekhô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ệnOSError. 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ínhfilenamecủ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ànhTrueđể 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
Truecó 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.walkvớ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ốngos.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, dirnames và filenames giống hệt với đầu ra
walk()và 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 descriptors và not 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_symlinks làFalse.Ghi chú
Vì
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ớidup()) 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.fwalkvớ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()và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_NONBLOCKvàEFD_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_SEMAPHOREkhô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_NONBLOCKkhô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 fd làeventfd().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 fd làeventfd().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_NONBLOCKcho bộ mô tả tệpeventfd()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ể đượcint.from_bytes(x, byteorder=sys.byteorder)chuyển đổi thànhint.select()và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:time.CLOCK_BOOTTIME(Kể từ Linux 3.15 cho timerfd_create)
Nếu clockid là
time.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 xemTFD_TIMER_CANCEL_ON_SET.Nếu clockid là
time.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 clockid là
time.CLOCK_BOOTTIME, giống nhưtime.CLOCK_MONOTONICngoạ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_NONBLOCKkhô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ăngOSErrorvớierrnođược đặt thànherrno.EAGAIN.TFD_CLOEXECluô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ệOSErrorvớierrnođược đặt thànherrno.EINVALTheo 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 trongtimerfd_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ăngOSErrorvớierrnođược đặt thànherrno.EINVALNếu cờ
TFD_TIMER_CANCEL_ON_SETđược đặt cùng vớiTFD_TIMER_ABSTIMEvà đồ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:
settimeofdayclock_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.Xem thêm
timerfd_create(2), timerfd_settime(2), settimeofday(2), clock_settime(2) và date(1).
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_expirationbiể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_ABSTIMEcó được đặt hay không.intervalbiể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 khinext_expirationtrôi qua.Xem thêm
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áiO_NONBLOCKcho bộ mô tả tệp hẹn giờ mới. NếuTFD_NONBLOCKkhô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ếuTFD_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()và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()vàtimerfd_settime_ns()cùng vớiTFD_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 descriptor và not following symlinks.
Tăng một auditing event
os.getxattrvới các đối sốpath,attribute.Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho path và attribute.
- 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 path là
None,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 descriptor và not following symlinks.
Tăng một auditing event
os.listxattrvớ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 descriptor và not following symlinks.
Tăng một auditing event
os.removexattrvới các đối sốpath,attribute.Thay đổi trong phiên bản 3.6: Chấp nhận path-like object cho path và attribute.
- 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_REPLACEhoặcXATTR_CREATE. NếuXATTR_REPLACEđược cung cấp và thuộc tính không tồn tại,ENODATAsẽ được nâng lên. NếuXATTR_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àEEXISTSsẽ được nâng lên.Chức năng này có thể hỗ trợ specifying a file descriptor và not 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.setxattrvớ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 path và attribute.
- 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
SIGABRTcho 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át3. 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ý choSIGABRTbằngsignal.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_directoryvớ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
PATHhoặ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ưAddDllDirectorykhô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ặcos.fsync()trước khi gọi hàmexec*.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àmexecl*(). 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()vàexecvpe()) sẽ sử dụng biến môi trườngPATHđể đị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ếnPATH. Các biến thể khác,execl(),execle(),execv()vàexecve(), sẽ không sử dụng biếnPATHđể đị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()và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àmexecl(),execlp(),execv()và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ằngos.supports_fd. Nếu không có sẵn, việc sử dụng nó sẽ tạo raNotImplementedError.Tăng một auditing event
os.execvớ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 saufork().
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_SUCCESStrê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_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_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_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.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,OSErrorsẽ đượ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.forkmà 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ệussl.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 raDeprecationWarning.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ưmallocvàfree).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 đó pid là0ở 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ô-đunpty. Nếu xảy ra lỗi,OSErrorsẽ được nâng lên.Tăng auditing event
os.forkptymà 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ênos.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_EVENTvàsignal.CTRL_BREAK_EVENTlà 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.killvớ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.killpgvớ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-timeAPI level 31Added 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
EAGAINthay 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 là
'r'(mặc định) hay'w'. Đối số buffering có cùng ý nghĩa với đối số tương ứng với hàmopen()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
closetrả vềNonenế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.SIGKILLnế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ứcclose(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ứcclosetrực tiếp là mã thoát (hoặcNone).Đ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 quanhsubprocess.Popen. Sử dụngsubprocess.Popenhoặcsubprocess.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, args và env 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()và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()và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ọiposix_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_SETPGROUPcủa thư viện C.Nếu đối số resetids là
True, 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àFalsethì 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_RESETIDScủa thư viện C.Nếu đối số setsid là
True, nó sẽ tạo ID phiên mới choposix_spawn. setsid yêu cầu cờPOSIX_SPAWN_SETSIDhoặcPOSIX_SPAWN_SETSID_NP. Ngược lại,NotImplementedErrorsẽ đượ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_SETSIGMASKcủ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_SETSIGDEFcủ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_paramvới các tham số bộ lập lịch. Giá trịNonethay 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_SETSCHEDPARAMvàPOSIX_SPAWN_SETSCHEDULERtrong thư viện C.Tăng một auditing event
os.posix_spawnvớ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_CLOSEFROMcó 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ườngPATH(theo cách tương tự như đối vớiexecvp(3)).Tăng một auditing event
os.posix_spawnvớ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
subprocessthô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àngPyOS_BeforeFork(),PyOS_AfterFork_Parent()và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
subprocesscung 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 mode là
P_NOWAIT, hàm này trả về id tiến trình của tiến trình mới; nếu mode làP_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ăngwaitpid().Lưu ý trên VxWorks, hàm này không trả về
-signalkhi 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àmspawnl*(). 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()vàspawnvpe()) sẽ sử dụng biến môi trườngPATHđể đị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ếnPATH. Các biến thể khác,spawnl(),spawnle(),spawnv()vàspawnve(), sẽ không sử dụng biếnPATHđể đị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()và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àmspawnl(),spawnlp(),spawnv()và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()và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.spawnvới các đối sốmode,path,args,env.sẵn có: Unix, Windows, not WASI, not Android, not iOS.
spawnlp(),spawnlpe(),spawnvp()vàspawnvpe()không có sẵn trên Windows.spawnle()và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ô-đunsubprocessđể 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àmspawn*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àmspawn*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-signalnế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_DETACHtươ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ụngP_OVERLAY, quy trình hiện tại sẽ được thay thế; chức năngspawn*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'và'edit'(được sử dụng trên các tệp) cũng như'explore'và'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àmpathlibhoặcos.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,NotImplementedErrorsẽ được nâng lên.Tăng một auditing event
os.startfilevới các đối sốpath,operation.Tăng một auditing event
os.startfile/2vớ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, cwd và show_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ớisys.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
subprocesscung 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ệusubprocessđể 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.systemvớ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ùngsystem- thời gian hệ thốngchildren_user- thời gian người dùng của tất cả các tiến trình conchildren_system- thời gian hệ thống của tất cả các tiến trình conelapsed- đã 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_systemvàelapsedtheo thứ tự đó.Xem trang hướng dẫn sử dụng Unix times(2) và times(3) trên Unix hoặc the GetProcessTimes MSDN trên Windows. Trên Windows, chỉ biết
uservàsystem; 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,
ChildProcessErrorsẽ đượ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_ALLhoặ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,WSTOPPEDhoặcWCONTINUED;WNOHANGvàWNOWAITlà 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_tvớ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àosi_code)si_code(xemCLD_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,Nonesẽ được trả về. Ngược lại, nếu không có con nào phù hợp có thể chờ đợi,ChildProcessErrorsẽ đượ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 pid là0, 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 là-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
WNOHANGvà 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,ChildProcessErrorsẽ được nâng lên. Các tùy chọn khác có thể được sử dụng làWUNTRACEDvàWCONTINUED.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
0khô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àmspawn*được gọi bằngP_NOWAITtrả 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ảoresource.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 chowaitpid()và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ảoresource.getrusage()để biết chi tiết về thông tin sử dụng tài nguyên. Các đối số chowait4()giống với các đối số được cung cấp chowaitpid().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ằngpidfd_open()).
sẵn có: Unix, not WASI, not Android, not iOS.
Ghi chú
P_PIDFDchỉ 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()và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()và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()và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ọiwait*()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_codetrong kết quả được trả về bởiwaitid().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_KILLEDvàCLD_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ề-signumtrong đó 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ọnWUNTRACED, thì trước tiên người gọi phải kiểm tra xemWIFSTOPPED(status)có đúng không. Hàm này không được gọi nếuWIFSTOPPED(status)là đúng.Xem thêm
Chức năng
WIFEXITED(),WEXITSTATUS(),WIFSIGNALED(),WTERMSIG(),WIFSTOPPED(),WSTOPSIG().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ề
Truenế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ề
Truenếu một thành phần con bị dừng đã được tiếp tục bằng cách gửiSIGCONT(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ề
Truenế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ềTruenếu lệnh gọiwaitpid()được thực hiện bằng tùy chọnWUNTRACEDhoặ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ề
Truenế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ề
Truenếu quá trình thoát ra kết thúc bình thường, nghĩa là bằng cách gọiexit()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()và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_paramcho 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ì
Nonesẽ được trả về.Nếu name là một chuỗi và không được biết đến,
ValueErrorsẽ đượ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 trongconfstr_names, thìOSErrorsẽ được đưa ra cùng vớierrno.EINVALcho 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ề
Nonenế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ặcPYTHON_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
OSErrornế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ề
Nonenếu không xác định được. Nó có thể nhỏ hơncpu_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ặcPYTHON_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ì
-1sẽ được trả về. Các nhận xét liên quan đến tham số name choconfstr()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ởisysconf_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 quaos.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 quaos.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ụngos.path.split()vàos.path.join()--- nhưng đôi khi nó cũng hữu ích. Cũng có sẵn thông quaos.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
Nonenế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 đóseplà dấu gạch chéo ngược. Cũng có sẵn thông quaos.path.
- os.extsep¶
Ký tự phân tách tên tệp cơ sở khỏi phần mở rộng; ví dụ:
'.'trongos.py. Cũng có sẵn thông quaos.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 quaos.path.
- os.defpath¶
Đường dẫn tìm kiếm mặc định được
exec*p*vàspawn*p*sử dụng nếu môi trường không có khóa'PATH'. Cũng có sẵn thông quaos.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 quaos.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()và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/randomvà/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_RANDOMvàGRND_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àmgetrandom()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/urandomkhông khả dụng hoặc không thể đọc được, ngoại lệNotImplementedErrorsẽ xuất hiện.Trên Windows, nó sẽ sử dụng
BCryptGenRandom().Xem thêm
Mô-đun
secretscung 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 xemrandom.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 Cgetentropy()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ăngBlockingIOError.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/randomthay vì nhóm/dev/urandom.Added in version 3.6.