【python 内置模块】os

2024-01-20 00:00:00

目录:

os 模块用于与操作系统交互的核心模块,提供了丰富的文件和目录操作、环境变量管理、路径处理等功能。

工作目录

os.getcwd() 获取当前工作目录;
os.chdir() 用于改变当前工作目录,相当于 cd 命令;
os.curdir 和 os.pardir 用于表示当前目录和上一级目录。

import os

print(os.getcwd())

os.chdir('/Users/dkvirus/Documents/vscode-docs/python_scripts')
print(os.getcwd())

print(os.curdir) # '.'
print(os.pardir) # '..'

创建目录

os.mkdir(path): 生成单级目录,不能递归创建;
os.makedirs(path): 可生成多层递归目录;

os.mkdir('new_directory')  # 创建单层目录
os.makedirs('a1/a2/a3')    # 递归创建多层目录

删除目录

os.rmdir(path): 删除单级空目录,若目录不为空则无法删除;
os.removedirs(path): 递归删除目录。若目录为空则删除,并递归到上一级目录,依此类推;

os.rmdir('new_directory')  # 删除空目录
os.removedirs('a1/a2/a3')  # 递归删除空目录

查看目录

os.listdir(path): 列出指定目录下的所有文件和子目录(包括隐藏文件),并以列表方式返回;

print(os.listdir('.'))  # 列出当前目录所有内容

删除文件

os.remove(path): 删除一个文件;

os.remove('old_file.txt')  # 删除文件

重命名文件

os.rename(src, dst): 重命名文件或目录;

os.rename('old_name.txt', 'new_name.txt')  # 重命名文件

查看文件状态

os.stat(path): 获取文件/目录的详细信息,包括大小、修改时间等。

print(os.stat('.'))
# 输出: os.stat_result(st_mode=16877, st_ino=56702390, st_dev=16777233, st_nlink=30, st_uid=501, st_gid=20, st_size=960, st_atime=1770256614, st_mtime=1770256614, st_ctime=1770256614)

字段含义如下:

  • st_mode: 文件的权限模式,如 0o777 表示可读、可写、可执行。
  • st_ino: 文件的索引节点编号。
  • st_dev: 文件所在设备的编号。
  • st_nlink: 文件的链接数。
  • st_uid: 文件的所有者的用户编号。
  • st_gid: 文件的所有者的组编号。
  • st_size: 文件的大小,以字节为单位。
  • st_atime: 文件最后访问的时间,以秒为单位,当文件内容被读取时更新;
  • st_mtime: 文件最后修改的时间,以秒为单位,当文件内容被修改时更新;
  • st_ctime: 文件最后改变的时间,以秒为单位,在 Unix/Linux 系统上,当文件的元数据(如权限 st_mode、所有者 st_uid、链接数 st_nlink等)发生变化时更新。在 Windows 上,它表示创建时间。

更改文件权限

os.chmod(path, mode): 更改文件权限;

# 修改文件为 644 权限:所有者可读写,组和其他用户只读
os.chmod('example.txt', 0o644)
# 修改文件为 755 权限:所有者可读写执行,组和其他用户可读执行
os.chmod('script.sh', 0o755)
# 修改文件为 600 权限:仅所有者可读写,常用于私密文件如密钥
os.chmod('secret.key', 0o600)

更改文件所有者

os.chown(path, uid, gid): 更改文件所有者(Unix系统);

import os
import pwd
import grp

# 示例1:直接使用数字 ID 进行修改
# 将文件的所有者 ID 改为100,组 ID 保持不变(-1)
os.chown("/tmp/foo.txt", 100, -1)

# 示例2:通过用户名和组名获取 ID 后进行修改
user_name = 'newuser'
group_name = 'newgroup'

try:
    # 获取用户ID和组ID
    uid = pwd.getpwnam(user_name).pw_uid
    gid = grp.getgrnam(group_name).gr_gid
    # 改变文件的所有者和组
    os.chown('/path/to/file', uid, gid)
    print(f"Changed ownership successfully.")
except KeyError:
    print(f"User or group not found.")

操作环境变量

os.environ: 获取系统环境变量;
os.environ.get(key): 获取特定环境变量的值;
os.environ[key] = value: 设置环境变量(仅在当前进程有效)。

import os

print(os.environ)
print(os.environ.get('HOME'))

执行系统命令

os.system(command): 运行 shell 命令,直接显示结果;
os.popen(command): 执行命令并获取输出;

import os

os.system('ls')

output = os.popen('ls -l').read()
print(output)

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: