os Python

Содержание
Введение
getcwd() и chdir()
listdir(): Содержимое директории
Создать директорию
Удалить директорию
rename(): Переименовать файл
os.stat(): информация о файле
os.walk(): обход директорий
os.environ()
os.pardir
os.path()
os.getlogin(): имя пользователя
dir(): все атрибуты
Похожие статьи

Введение

Этот модуль предоставляет портативный способ использования функциональности, зависящей от операционной системы.

Если вы просто хотите прочитать или записать файл, обратитесь к open() , если вы хотите управлять путями, обратитесь к модулю os.path , и если вы хотите прочитать все строки во всех файлах в командной строке, обратитесь к модулю fileinput.

Для создания временных файлов и каталогов обратитесь к модулю tempfile, а для высокоуровневой обработки файлов и каталогов обратитесь к модулю shutil .

Статьи, которые хорошо дополняют эту:

Файлы в Linux

Основы работы с файлами в Python

Официальная документация

getcwd() и chdir()

Получить текущую директорию можно методом getcwd()

Перейти в другую директорию можно методом chdir()

import os # get current working directory print(os.getcwd()) # change directory os.chdir('/mnt/c/Users/Andrei/sandbox') print(os.getcwd())

/mnt/c/Users/Andrei/sandbox/python /mnt/c/Users/Andrei/sandbox

listdir()

Получить содержимое директории можно методом listdir()

import os # list directory contents print("os.listdir()") print(os.listdir())

os.listdir() ['php', 'python', 'test_complete']

Создать директорию

Создать директорию можно методами mkdir() и makedirs()

import os # create dir without subdirs os.mkdir('eth1.ru') # create dir with subdirs os.makedirs('heihei.ru/Spain/travel') print("os.listdir()") print(os.listdir())

os.listdir() ['hehei.ru', 'php', 'python', 'test_complete', 'eth1.ru']

Если нужно предварительно проверить наличие директории с таким же именем

import os BACKUP_PATH = os.path.join(os.path.dirname(__file__), "backup") if not os.path.exists(BACKUP_PATH): os.makedirs(BACKUP_PATH)

Удалить директорию

Удалить директорию можно методами rmdir() и removedirs()

import os # remove dir without subdirs os.rmdir('eth1.ru') # remove dir with subdirs os.removedirs('heihei.ru/Spain/travel') print("os.listdir()") print(os.listdir())

os.listdir() ['php', 'python', 'test_complete']

rename()

Переименовать файл можно методом rename()

import os # rename file os.rename('test.txt', 'demo.txt') print("os.listdir()") print(os.listdir()) os.rename('demo.txt', 'test.txt') print("os.listdir()") print(os.listdir())

os.listdir() ['demo.txt', 'php', 'python', 'test_complete'] os.listdir() ['php', 'python', 'test.txt', 'test_complete']

os.stat()

import os os.chdir('/mnt/c/Users/Andrei/sandbox') # info print("os.stat('test.txt')") print(os.stat('test.txt')) # file size print("os.stat('test.txt').st_size") print(os.stat('test.txt').st_size) # modification time print("os.stat('test.txt').st_mtime") print(os.stat('test.txt').st_mtime)

os.stat('test.txt') os.stat_result(st_mode=33279, st_ino=48695170971005453, st_dev=47, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1683214359, st_mtime=1683214359, st_ctime=1683214612) os.stat('test.txt').st_size 0 os.stat('test.txt').st_mtime 1683214359.8984318

import os from datetime import datetime os.chdir('/mnt/c/Users/Andrei/sandbox') mod_time = os.stat('test.txt').st_mtime print(datetime.fromtimestamp(mod_time))

2024-07-22 23:16:54.098432

os.walk()

os.walk() возвращает итератор элементы которого это кортежи из трёх элементов: dirpath, dirname, filenames

Пройдёмся по директории glob_ex из статьи про glob

glob_ex/ ├── glob_ex.py ├── glob_ex1.py ├── glob_ex3.py ├── heihei │ ├── Armenia │ │ ├── holidays │ │ │ ├── easter.html │ │ │ └── sargis.html │ │ └── index.html │ ├── Finland.html │ ├── Spain.html │ └── Sweden.html ├── iglob_ex.py ├── sample_files │ ├── it.txt │ ├── testing.txt │ └── travel.txt └── topbicycle ├── forward.html ├── stark.html └── stels.html

import os from datetime import datetime path = '/mnt/c/Users/Andrei/sandbox/python/glob_ex/' os.chdir(path) walk = os.walk(path) print("next:", walk.__next__()) print("next:", walk.__next__()) print("next:", next(walk))

python os_walk_ex.py

next: ('/mnt/c/Users/Andrei/sandbox/python/glob_ex/', ['heihei', 'sample_files', 'topbicycle'], ['glob_ex.py', 'glob_ex1.py', 'glob_ex3.py', 'iglob_ex.py']) next: ('/mnt/c/Users/Andrei/sandbox/python/glob_ex/heihei', ['Armenia'], ['Finland.html', 'Spain.html', 'Sweden.html']) next: ('/mnt/c/Users/Andrei/sandbox/python/glob_ex/heihei/Armenia', ['holidays'], ['.hidden.html', 'index.html'])

import os from datetime import datetime path = '/mnt/c/Users/Andrei/sandbox/python/glob_ex/' os.chdir(path) for dirpath, dirnames, filenames in os.walk(path):     print('Current Path:', dirpath)     print('Directories:', dirnames)     print('Files:', filenames)     print()

python os_walk_ex.py

Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/ Directories: ['heihei', 'sample_files', 'topbicycle'] Files: ['glob_ex.py', 'glob_ex1.py', 'glob_ex3.py', 'iglob_ex.py'] Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/heihei Directories: ['Armenia'] Files: ['Finland.html', 'Spain.html', 'Sweden.html'] Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/heihei/Armenia Directories: ['holidays'] Files: ['.hidden.html', 'index.html'] Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/heihei/Armenia/holidays Directories: [] Files: ['easter.html', 'sargis.html'] Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/sample_files Directories: [] Files: ['it.txt', 'testing.txt', 'travel.txt'] Current Path: /mnt/c/Users/Andrei/sandbox/python/glob_ex/topbicycle Directories: [] Files: ['forward.html', 'stark.html', 'stels.html']

os.environ()

import os print(os.environ.get("HOME"))

/home/andrei

os.pardir

import os print(os.pardir)

python os_pardir.py

..

Про применение os.pardir совместно с os.path можете прочитать здесь

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

os.path()

Про os.path есть отдельная статья здесь

getlogin()

Получить имя текущего пользователя с помощью Python можно методом getlogin()

import os print(os.getlogin())

python os_getlogin.py

Andrei

dir()

Список всех атрибутов os можно получить с помощью функции dir()

import os print(dir(os))

python os_ex.py

['CLD_CONTINUED', 'CLD_DUMPED', 'CLD_EXITED', 'CLD_KILLED', 'CLD_STOPPED', 'CLD_TRAPPED', 'DirEntry', 'EFD_CLOEXEC', 'EFD_NONBLOCK', 'EFD_SEMAPHORE', 'EX_CANTCREAT', 'EX_CONFIG', 'EX_DATAERR', 'EX_IOERR', 'EX_NOHOST', 'EX_NOINPUT', 'EX_NOPERM', 'EX_NOUSER', 'EX_OK', 'EX_OSERR', 'EX_OSFILE', 'EX_PROTOCOL', 'EX_SOFTWARE', 'EX_TEMPFAIL', 'EX_UNAVAILABLE', 'EX_USAGE', 'F_LOCK', 'F_OK', 'F_TEST', 'F_TLOCK', 'F_ULOCK', 'GRND_NONBLOCK', 'GRND_RANDOM', 'GenericAlias', 'MFD_ALLOW_SEALING', 'MFD_CLOEXEC', 'MFD_HUGETLB', 'MFD_HUGE_16GB', 'MFD_HUGE_16MB', 'MFD_HUGE_1GB', 'MFD_HUGE_1MB', 'MFD_HUGE_256MB', 'MFD_HUGE_2GB', 'MFD_HUGE_2MB', 'MFD_HUGE_32MB', 'MFD_HUGE_512KB', 'MFD_HUGE_512MB', 'MFD_HUGE_64KB', 'MFD_HUGE_8MB', 'MFD_HUGE_MASK', 'MFD_HUGE_SHIFT', 'Mapping', 'MutableMapping', 'NGROUPS_MAX', 'O_ACCMODE', 'O_APPEND', 'O_ASYNC', 'O_CLOEXEC', 'O_CREAT', 'O_DIRECT', 'O_DIRECTORY', 'O_DSYNC', 'O_EXCL', 'O_FSYNC', 'O_LARGEFILE', 'O_NDELAY', 'O_NOATIME', 'O_NOCTTY', 'O_NOFOLLOW', 'O_NONBLOCK', 'O_PATH', 'O_RDONLY', 'O_RDWR', 'O_RSYNC', 'O_SYNC', 'O_TMPFILE', 'O_TRUNC', 'O_WRONLY', 'POSIX_FADV_DONTNEED', 'POSIX_FADV_NOREUSE', 'POSIX_FADV_NORMAL', 'POSIX_FADV_RANDOM', 'POSIX_FADV_SEQUENTIAL', 'POSIX_FADV_WILLNEED', 'POSIX_SPAWN_CLOSE', 'POSIX_SPAWN_DUP2', 'POSIX_SPAWN_OPEN', 'PRIO_PGRP', 'PRIO_PROCESS', 'PRIO_USER', 'P_ALL', 'P_NOWAIT', 'P_NOWAITO', 'P_PGID', 'P_PID', 'P_PIDFD', 'P_WAIT', 'PathLike', 'RTLD_DEEPBIND', 'RTLD_GLOBAL', 'RTLD_LAZY', 'RTLD_LOCAL', 'RTLD_NODELETE', 'RTLD_NOLOAD', 'RTLD_NOW', 'RWF_APPEND', 'RWF_DSYNC', 'RWF_HIPRI', 'RWF_NOWAIT', 'RWF_SYNC', 'R_OK', 'SCHED_BATCH', 'SCHED_FIFO', 'SCHED_IDLE', 'SCHED_OTHER', 'SCHED_RESET_ON_FORK', 'SCHED_RR', 'SEEK_CUR', 'SEEK_DATA', 'SEEK_END', 'SEEK_HOLE', 'SEEK_SET', 'SPLICE_F_MORE', 'SPLICE_F_MOVE', 'SPLICE_F_NONBLOCK', 'ST_APPEND', 'ST_MANDLOCK', 'ST_NOATIME', 'ST_NODEV', 'ST_NODIRATIME', 'ST_NOEXEC', 'ST_NOSUID', 'ST_RDONLY', 'ST_RELATIME', 'ST_SYNCHRONOUS', 'ST_WRITE', 'TMP_MAX', 'WCONTINUED', 'WCOREDUMP', 'WEXITED', 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', 'WIFSTOPPED', 'WNOHANG', 'WNOWAIT', 'WSTOPPED', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED', 'W_OK', 'XATTR_CREATE', 'XATTR_REPLACE', 'XATTR_SIZE_MAX', 'X_OK', '_Environ', '__all__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_fwalk', '_get_exports_list', '_spawnvef', '_walk', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'chown', 'chroot', 'close', 'closerange', 'confstr', 'confstr_names', 'copy_file_range', 'cpu_count', 'ctermid', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'environb', 'error', 'eventfd', 'eventfd_read', 'eventfd_write', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fchdir', 'fchmod', 'fchown', 'fdatasync', 'fdopen', 'fork', 'forkpty', 'fpathconf', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fstatvfs', 'fsync', 'ftruncate', 'fwalk', 'get_blocking', 'get_exec_path', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getegid', 'getenv', 'getenvb', 'geteuid', 'getgid', 'getgrouplist', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getpriority', 'getrandom', 'getresgid', 'getresuid', 'getsid', 'getuid', 'getxattr', 'initgroups', 'isatty', 'kill', 'killpg', 'lchown', 'linesep', 'link', 'listdir', 'listxattr', 'lockf', 'login_tty', 'lseek', 'lstat', 'major', 'makedev', 'makedirs', 'memfd_create', 'minor', 'mkdir', 'mkfifo', 'mknod', 'name', 'nice', 'open', 'openpty', 'pardir', 'path', 'pathconf', 'pathconf_names', 'pathsep', 'pidfd_open', 'pipe', 'pipe2', 'popen', 'posix_fadvise', 'posix_fallocate', 'posix_spawn', 'posix_spawnp', 'pread', 'preadv', 'putenv', 'pwrite', 'pwritev', 'read', 'readlink', 'readv', 'register_at_fork', 'remove', 'removedirs', 'removexattr', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sched_get_priority_max', 'sched_get_priority_min', 'sched_getaffinity', 'sched_getparam', 'sched_getscheduler', 'sched_param', 'sched_rr_get_interval', 'sched_setaffinity', 'sched_setparam', 'sched_setscheduler', 'sched_yield', 'sendfile', 'sep', 'set_blocking', 'set_inheritable', 'setegid', 'seteuid', 'setgid', 'setgroups', 'setpgid', 'setpgrp', 'setpriority', 'setregid', 'setresgid', 'setresuid', 'setreuid', 'setsid', 'setuid', 'setxattr', 'spawnl', 'spawnle', 'spawnlp', 'spawnlpe', 'spawnv', 'spawnve', 'spawnvp', 'spawnvpe', 'splice', 'st', 'stat', 'stat_result', 'statvfs', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sync', 'sys', 'sysconf', 'sysconf_names', 'system', 'tcgetpgrp', 'tcsetpgrp', 'terminal_size', 'times', 'times_result', 'truncate', 'ttyname', 'umask', 'uname', 'uname_result', 'unlink', 'unsetenv', 'urandom', 'utime', 'wait', 'wait3', 'wait4', 'waitid', 'waitid_result', 'waitpid', 'waitstatus_to_exitcode', 'walk', 'write', 'writev']

Похожие статьи
Основы Python
Type Hints
__future__
configparser
Менеджер контекста
docstring
#!: Shebang
Объекты
Итерация
os
pathlib

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: