Python-常用模块

os模块

1
2
# 导入模块
import os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
os.name # 获取操作系统标识, windows是nt,linux是posix
>>> os.name
'nt'

os.sep # 输出当前操作系统的路径分隔符;windos 展示 “\” ;linux ”/“
# window路径使用\,需要在路径开头加r. 例如:os.remove(r'd:\11.txt').
# 经测试,windows路径直接使用/可以被识别,无需添加r。
os.remove(file) # 删除文件 os.remove('d:/11.txt')
os.unlink(file) # 删除文件 os.unlink('d:/a.txt')
os.rename(old,new) # 重命名文件 os.rename('d:/a.txt','d:/b.txt')
os.listdir(path) # 列出指定目录下所有文件 os.listdir('d:')
os.chdir(path) # 改变当前工作目录 os.chdir('e:/')
os.getcwd() # 获取当前文件路径 os.getcwd()
os.mkdir(path) # 新建目录 os.mkdir(r'd:\testdir')
os.rmdir(path) # 删除空目录(删除非空目录, 使用shutil.rmtree()) os.rmdir(r'd:\testdir')
os.makedirs(path) # 创建多级目录 os.makedirs(r'd:\testdir1\testdir2')
os.removedirs() # 删除多级目录 os.removedirs(r'd:\testdir1\testdir2')
os.stat(file) # 获取文件属性 os.stat(r'd:\a.txt')
os.chmod(file) # 修改文件权限 os.chmod(r'd:\a.txt',stat.S_IREAD) 参数详情参考:https://www.runoob.com/python3/python3-os-chmod.html

os.utime(file,times) # 修改文件时间戳 os.utime("a2.py",(1330712280, 1330712292))
os.system() # 执行操作系统命令 os.system('netstat')
os.execvp() # 启动一个新进程 os.execvp
os.fork() # 获取父进程ID,在子进程返回中返回0
os.execvp() # 执行外部程序脚本(Uinx)
os.spawn() # 执行外部程序脚本(Windows)
os.access(path, mode) # 判断文件权限(详细参考cnblogs)
os.wait() # 暂时未知

os.path模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
os.path.split(filename) # 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
os.path.splitext(filename) # 将文件路径和文件扩展名分割成一个元组
os.path.dirname(filename) # 返回文件路径的目录部分
os.path.basename(filename) # 返回文件路径的文件名部分
os.path.join(dirname,basename) # 将文件路径和文件名凑成完整文件路径
os.path.abspath(name) # 获得绝对路径
os.path.splitunc(path) # 把路径分割为挂载点和文件名
os.path.normpath(path) # 规范path字符串形式
os.path.exists() # 判断文件或目录是否存在
os.path.isabs() # 如果path是绝对路径,返回True
os.path.realpath(path) #返回path的真实路径
os.path.relpath(path[, start]) #从start开始计算相对路径
os.path.normcase(path) #转换path的大小写和斜杠
os.path.isdir() # 判断name是不是一个目录,name不是目录就返回false
os.path.isfile() # 判断name是不是一个文件,不存在返回false
os.path.islink() # 判断文件是否连接文件,返回boolean
os.path.ismount() # 指定路径是否存在且为一个挂载点,返回boolean
os.path.samefile() # 是否相同路径的文件,返回boolean
os.path.getatime() # 返回最近访问时间 浮点型
os.path.getmtime() # 返回上一次修改时间 浮点型
os.path.getctime() # 返回文件创建时间 浮点型
os.path.getsize() # 返回文件大小 字节单位
os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径
os.path.lexists #路径存在则返回True,路径损坏也返回True
os.path.expanduser(path) # 把path中包含的”~”和”~user”转换成用户目录
os.path.expandvars(path) # 根据环境变量的值替换path中包含的”$name”和”${name}”
os.path.sameopenfile(fp1, fp2) # 判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) # 判断stat tuple stat1和stat2是否指向同一个文件
os.path.splitdrive(path) # 一般用在windows下,返回驱动器名和路径组成的元组
os.path.walk(path, visit, arg) # 遍历path,给每个path执行一个函数详细见手册
os.path.supports_unicode_filenames() # 设置是否支持unicode路径名

stat模块

1
2
3
# 导入模块
import os
from stat import *
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 描述os.stat()返回的文件属性列表中各值的意义
# os.stat() 部分也是借助stat模块获取信息
# 示例
>>> os.stat(r'E:\hexo\source\_posts\2022-03-29-nginx配置示例1.md')
os.stat_result(st_mode=33206, st_ino=562949953436911, st_dev=3120552814, st_nlink=1, st_uid=0, st_gid=0, st_size=4397, st_atime=1649486001, st_mtime=1648715597, st_ctime=1648515220)

# 设置fileStats变量,获取文件全部属性列表,然后根据如下语法获取对应结果。
fileStats = os.stat(path) # 获取到的文件属性列表
fileStats[stat.ST_MODE] # 获取文件的模式
fileStats[stat.ST_SIZE] # 文件大小
fileStats[stat.ST_MTIME] # 文件最后修改时间
fileStats[stat.ST_ATIME] # 文件最后访问时间
fileStats[stat.ST_CTIME] # 文件创建时间

stat.S_ISDIR(fileStats[stat.ST_MODE]) # 是否目录
stat.S_ISREG(fileStats[stat.ST_MODE]) # 是否一般文件
stat.S_ISLNK(fileStats[stat.ST_MODE]) # 是否连接文件
stat.S_ISSOCK(fileStats[stat.ST_MODE]) # 是否COCK文件
stat.S_ISFIFO(fileStats[stat.ST_MODE]) # 是否命名管道
stat.S_ISBLK(fileStats[stat.ST_MODE]) # 是否块设备
stat.S_ISCHR(fileStats[stat.ST_MODE]) # 是否字符设置

# 设置st_mode属性
stat.S_ISUID: 执行时设置用户ID
stat.S_ISGID: 执行时设置组ID
stat.S_ENFMT: 强制记录锁定
stat.S_ISVTX: 执行之后保存文字和图片
stat.S_IREAD: 所有者的读权限
stat.S_IWRITE: 所有者的写权限
stat.S_IEXEC: 所有者的执行权限
stat.S_IRWXU: 所有者的读写执行的权限
stat.S_IRUSR: 所有者的读权限
stat.S_IWUSR: 所有者的写权限
stat.S_IXUSR: 所有者的执行权限
stat.S_IRWXG: 同组用户的读写权限
stat.S_IRGRP: 同组用户的读权限
stat.S_IWGRP: 同组用户的写权限
stat.S_IXGRP: 同组用户的执行权限
stat.S_IRWXO: 其它组用户的读写执行权限
stat.S_IROTH: 其它组用户的读权限
stat.S_IWOTH: 其它组用户的写权限
stat.S_IXOTH: 其它组用户的执行权限

# 改变某一信息,直接拿mode与相应的stat.S_XXX执行'&'操作即可。我们通常使用os.chmod()来改变一个文件的属性信息。如下:

os.chmod('windows-version.txt', f_info.st_mode & stat.S_IXUSR)

# 这样,将该文件就有了所有者的执行权限。这样的权限设置对于Windows系统来说意义不大,但是Linux系统使用这种方式可以替代内部的Shell实现,多了一种方案,不是吗?在进行网络安全编程时,使用Python改变文件属性也是个常用的操作,大家务必要掌握哦。

sys模块

1
2
# 导入模块
import sys
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sys.argv # 命令行参数List,第一个元素是程序本身路径 
sys.path # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.modules.keys() # 返回所有已经导入的模块列表
sys.modules # 返回系统导入的模块字段,key是模块名,value是模块
sys.exc_info() # 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n) # 退出程序,正常退出时exit(0)
sys.hexversion # 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version # 获取Python解释程序的版本信息
sys.platform # 返回操作系统平台名称
sys.stdout # 标准输出
sys.stdout.write(‘aaa‘) # 标准输出内容
sys.stdout.writelines() # 无换行输出
sys.stdin # 标准输入
sys.stdin.read() # 输入一行
sys.stderr # 错误输出
sys.exc_clear() # 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix # 返回平台独立的python文件安装的位置
sys.byteorder # 本地字节规则的指示器,big-endian平台的值是‘big‘,little-endian平台的值是‘little‘
sys.copyright # 记录python版权相关的东西
sys.api_version # 解释器的C的API版本
sys.version_info # ‘final‘表示最终,也有‘candidate‘表示候选,表示版本级别,是否有后继的发行
sys.getdefaultencoding() # 返回当前你所用的默认的字符编码格式
sys.getfilesystemencoding() # 返回将Unicode文件名转换成系统文件名的编码的名字
sys.builtin_module_names # Python解释器导入的内建模块列表
sys.executable # Python解释程序路径
sys.getwindowsversion() # 获取Windows的版本
sys.stdin.readline() # 从标准输入读一行,sys.stdout.write(“a”) 屏幕输出a
sys.setdefaultencoding(name) # 用来设置当前默认的字符编码(详细使用参考文档)
sys.displayhook(value) # 如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档)
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!