015、Python模块-os模块详解

Python模块-os模块详解

os模块是Python中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。

1、系统模块

1. 获取系统名称
>>>os.name
'nt'

nt: windows系统 posix: Linux系统

2. 获取系统的换行符
>>> os.linesep
'\r\n'  # windows换行符
>>> os.linesep
'\n'  # Linux换行符
3. 获取当前系统的路径分隔符
>>>os.sep
'\\'

windows下路径分隔符:“\\” Linux下路径分隔符: “/

4. 获取系统下所有的系统环境变量
>>> os.environ
# environ({'XDG_SESSION_ID': '1526', 'HOSTNAME': 'server-ming', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'HISTSIZE': '1000', 'SSH_CLIENT': '124.202.173.218 2098 22', 'SSH_TTY': '/dev/pts/1', 'USER': 'root', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin', 'PWD': '/root', 'LANG': 'en_US.UTF-8', 'HISTCONTROL': 'ignoredups', 'SHLVL': '1', 'HOME': '/root', 'LOGNAME': 'root', 'SSH_CONNECTION': '124.202.173.218 2098 172.26.52.195 22', 'LESSOPEN': '||/usr/bin/lesspipe.sh %s', 'XDG_RUNTIME_DIR': '/run/user/0', '_': '/usr/bin/python3'})

# Linux下获取当前用户
>>> os.environ.get("USER")  
'root'

# windows下获取当前用户
>>> os.environ.get("CURRENT_USER_NAME")
'Administrator'
5. 根据环境变更名称,读取环境变量
# Linux下获取计算机名称
>>> os.getenv("HOSTNAME")
'server-ming'

# windows下获取计算机名称
>>> os.getenv("MY_COMPUTER_NAME")
'ADTEC-MING'
6. 获取cpu数量
>>> os.cpu_count()
8
7. 获取系统详细信息

适用于Linux操作系统

>>> unames = os.uname()
>>> unames
posix.uname_result(sysname='Linux', nodename='server-ming', release='3.10.0-957.21.3.el7.x86_64', version='#1 SMP Tue Jun 18 16:35:19 UTC 2019', machine='x86_64')
>>> unames.sysname
'Linux'

>>> unames.machine
'x86_64'
8. 获取系统当前的登录用户
>>> os.getlogin()
'root'

2、os.path

a、路径获取
1. 获取当前的工作路径
print(os.getcwd())  # d:\mycode\pycode
2. 获取文件的绝对路径

获取当前目录下的某个文件的绝对路径,文件存不存在都会返回

print(os.path.abspath(__file__))
# d:\mycode\pycode\demo.py  __file__指当前文件
3. 将路径分隔在目录和文件名
print(os.path.split("d:\\mycode\\pycode\\demo.py"))
# ('d:\\mycode\\pycode', 'demo.py')
4. 获取文件的目录
print(os.path.dirname("d:\\mycode\\pycode\\demo.py"))
# d:\mycode\pycode
5. 获取路径中最后的文件名
print(os.path.basename("d:\\mycode\\pycode\\demo.py"))
# demo.py
6. 路径拼接
print(os.path.join(os.getcwd(), 'mytest'))
# D:\mycode\pycode\mytest
7. 获取路径(文件/文件夹)的最后访问时间
from datetime import datetime
path_atime = os.path.getatime('d:\\mycode\\pycode\\mytest')
print(datetime.fromtimestamp(path_atime))

# 2022-06-21 10:41:12.095125
8. 获取路径(文件/文件夹)的创建时间
from datetime import datetime
path_ctime = os.path.getctime('d:\\mycode\\pycode\\mytest')
print(datetime.fromtimestamp(path_ctime))

# 2022-06-21 10:04:53.622260
9. 获取路径(文件/文件夹)的最后修改时间
from datetime import datetime
path_mtime = os.path.getmtime('d:\\mycode\\pycode\\mytest')
print(datetime.fromtimestamp(path_mtime))

# 2022-06-21 10:41:12.095125
10. 获取文件大小
print(os.path.getsize("d:\\mycode\\pycode\\demo.py"))
# 3555

获取路径下文件的内容的大小,为空时返回0, 如果路径不存在,则会报错。

b、路径判断
1. 判断是否绝对 路径
print(os.path.isabs("d:\\mycode\\pycode"))
# True
2.判断文件路径是否存在
print(os.path.exists("d:\\mycode\\pycode\\mylogs"))
# False
3.判断是否文件
print(os.path.isfile("d:\\mycode\\pycode\\mylogs"))  # False
print(os.path.isfile("d:\\mycode\\pycode\\123.py"))  # False
print(os.path.isfile("d:\\mycode\\pycode\\demo.py"))  # True

如果被判断的路径不是文件或者路径下文件不存在,则返回False,否则话,返回True

4. 判断是否文件夹
print(os.path.isdir("d:\\mycode\\pycode\\demo.py"))  # False
print(os.path.isdir("d:\\mycode\\pycode\\demo"))  # False
print(os.path.isdir("d:\\mycode\\pycode"))  # True

如果被判断的路径是文件或者文件夹不存在,则返回False。否则返回True.

5. 判断用户权限
print(os.access("c:\\windows\\system32\\drivers\\etc\\hosts"))

# False

3、文件及文件夹操作

1. 列出路径下所的文件
dir_path = "d:\\mycode"
print(os.listdir(dir_path))

# ['DevOps', 'DjangoBlog', 'DjangoBlog.xml', 'djcode', 'gocode', 'nginx.conf', 'pycode', 'vuecode']

列出路径下所有的文件,并以列表形式返回。

2. 创建目录
os.mkdir("d:\\mycode\\pycode\\mylogs")

# 判断目录是否存在,如果不存在,创建
if not os.path.exists("d:\\mycode\\pycode\\mylogs"):
    os.mkdir("d:\\mycode\\pycode\\mylogs")

如果创建的目录存在,会抛出异常。FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

3. 递归创建目录

递归创建目录。如果创建的子目录存在,会抛出异常。

os.makedirs("d:\\mytest\\test")

if not os.path.exists("d:\\mytest\\test"):
    os.makedirs("d:\\mytest\\test")
4. 删除目录

单个删除目录,如果目录不为空,不进行操作

os.rmdir("d:\\mytest\\test")
os.rmdir("d:\\mytest")

要删除的目录不存在会抛出异常:FileNotFoundError: [WinError 2] 系统找不到指定的文件。

要删除的目录不为空时抛出异常:OSError: [WinError 145] 目录不是空的。

5. 递归删除

归删除目录。 如果子目录成功删除,则removeirs会尝试依次删除路径中显示的每个父目录。如果子目录无法成功删除,则引发OSError。

os.removedirs("d:\\mytest\\test")
6. 删除文件
os.remove("d:\\mycode\\pycode\\mytest\\11.py")  # 删除成功
os.remove("d:\\mycode\\pycode\\mytest")

如果删除的内容是一个文件夹抛出异常: PermissionError: [WinError 5] 拒绝访问。

7. 重命名
os.rename("d:\\mycode\\pycode\\mytest", "d:\\mycode\pycode\\new_test")
8. 为文件添加权限
os.chmod("c:\\windows\\system32\\drivers\\etc\\hosts", stat.S_IRWXG)
序号 内容 说明
1 stat.S_ISUID 执行时设置用户ID
2 stat.S_ISGID 执行时设置组ID。
3 stat.S_ENFMT 执行记录锁定。
4 stat.S_ISVTX 执行后保存文本映像
5 stat.S_IREAD 由所有者读取
6 stat.S_IWRITE 由拥有者写入
7 stat.S_IEXEC 由所有者执行
8 stat.S_IRWXU 由所有者读取,写入和执行
9 stat.S_IRUSR 由拥有者读取
10 stat.S_IWUSR 由拥有者写入
11 stat.S_IXUSR 由所有者执行
12 stat.S_IRWXG 按组读取,写入和执行
13 stat.S_IRGRP 按组读取
14 stat.S_IWGRP 按组写入
15 stat.S_IXGRP 按组执行
16 stat.S_IRWXO 由其他人读取,写入和执行
17 stat.S_IROTH 其他人读取
18 stat.S_IWOTH 由他人写
19 stat.S_IXOTH 由他人执行

你可能感兴趣的:(python基础,python语法,python,linux,ssh)