Python常用模块
- 基础模块
- os
- os.chdir(path)
- os.chmod(path,mode)
- os.getcwd()
- os.listdir(path)
- os.makedirs(path[, mode])
- os.mkdir(path[, mode])
- os.open(file, flags[, mode])
- os.read(fd, n)
- os.remove(path)
- os.removedirs(path)
- os.rename(src, dst)
- os.rmdir(path)
- os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
- os.write(fd, str)
- os.path模块
- time
- json
- random
- threading
- multiprocessing
- 第三方模块
基础模块
os
用来处理文件和目录,常用的方法如下:
os.chdir(path)
用于改变当前工作目录到指定的路径。
- 参数
path – 要切换到的新路径。 - 返回值
如果允许访问返回 True , 否则返回False。 - 实例
temp = "./tmp" # 指定临时文件目录
os.chdir(temp) # 修改目录
os.chmod(path,mode)
用于更改文件或目录的权限。
- 参数
path – 文件名路径或目录路径。
mode – 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。 - 返回值
此方法没有返回值 - 实例
# 设置文件可以通过用户组执行
os.chmod("F:\\python\\python-class\\os模块\\tmp\\a.txt", stat.S_IWGRP)
print("修改成功")
os.getcwd()
获取当前文件目录或路径
- 返回值
返回当前进程的工作目录。 - 实例
current_path = os.getcwd() # 获取当前路径
print(current_path)
os.listdir(path)
用于返回指定的文件夹包含的文件或文件夹的名字的列表。
只返回指定路径平级的目录和文件,不包括 . 和 … 即使它在文件夹中。
只支持在 Unix, Windows 下使用。
- 参数
path – 需要列出的目录路径 - 返回值
返回指定路径下的所有文件和文件夹列表。返回值是一个列表 - 实例
current_path = os.getcwd() # 获取当前路径
dirs = os.listdir(current_path)
print(dirs)
os.makedirs(path[, mode])
递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。
- 参数
path – 需要递归创建的目录。
mode – 权限模式。 - 返回值
该方法没有返回值。 - 实例
# 创建的目录
path = "./tmp/home/monthly/daily"
# 以权限755创建目录 7 代表自己可读可写可执行 5 代表同组可读可执行 5代表其他人可读可执行
os.makedirs(path, mode=0o755)
print("创建成功")
os.mkdir(path[, mode])
以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。不能递归创建目录。
- 参数
path – 要创建的目录
mode – 要为目录设置的权限数字模式 - 实例
# 创建的目录
path = "./home"
# 若home目录不存在,就无法创建family目录,会抛出FileNotFoundError
# path="./home/family"
# 以权限755创建目录 7 代表自己可读可写可执行 5 代表同组可读可执行 5代表其他人可读可执行
os.mkdir(path, 0o755)
print("创建成功")
os.open(file, flags[, mode])
打开一个文件,并且设置需要的打开选项,mode参数是可选的,默认为 0777。
- 参数
file – 要打开的文件
flags – 该参数可以是以下选项,多个使用 “|” 隔开:
—— os.O_RDONLY: 以只读的方式打开
—— os.O_WRONLY: 以只写的方式打开
—— os.O_RDWR : 以读写的方式打开
—— os.O_NONBLOCK: 打开时不阻塞
—— os.O_APPEND: 以追加的方式打开
—— os.O_CREAT: 创建并打开一个新文件
—— os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
—— os.O_EXCL: 如果指定的文件存在,返回错误
—— os.O_SHLOCK: 自动获取共享锁
—— os.O_EXLOCK: 自动获取独立锁
—— os.O_DIRECT: 消除或减少缓存效果
—— os.O_FSYNC : 同步写入
—— os.O_NOFOLLOW: 不追踪软链接
mode – 类似 chmod()。 - 返回值
返回新打开文件的描述符。 - 实例
# 以读写方式 | 创建并打开一个新文件
f = os.open('b.txt', os.O_RDWR | os.O_CREAT, mode=0o755)
print("f is:", f) # 返回的文件的层符 该处返回3
os.write(f, bytes("This is test", encoding='utf-8'))
# 关闭文件
os.close(f)
print("文件关闭完成")
os.read(fd, n)
从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
- 参数
fd – 文件描述符。
n – 读取的字节 读取最大字节数,若超过文件最大字节数全部返回 - 返回值
返回包含读取字节的字符串,python3中返回byte - 实例
f = os.open('b.txt', os.O_RDWR | os.O_CREAT, mode=0o755)
f_read = os.read(f, 10)
print(f_read)
os.remove(path)
删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
- 参数
path – 要移除的文件路径 - 实例
os.remove('b.txt')
print("移除完成")
os.removedirs(path)
递归删除目录。像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般意味着你文件夹不为空)。
- 参数
path – 要移除的目录路径 - 实例
os.removedirs('./test/a')
print("移除完成")
os.rename(src, dst)
重命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。
- 参数
src – 要修改的目录名
dst – 修改后的目录名 - 实例
os.rename('b.txt','abc.txt') #重命名文件
os.rename('tmp', 'temp') # 重命名目录
print("重命名完成")
os.rmdir(path)
用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
- 参数
path – 要删除的目录路径 - 实例
os.rmdir('test')
print("删除成功")
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
输出在文件夹中的文件名通过在树中游走,向上或者向下。
该方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
- 参数
top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
– root 所指的是当前正在遍历的这个文件夹的本身的地址
– dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
– files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。 - 实例
for root, dirs, files in os.walk('.'):
# print("root is %s" % root)
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
os.write(fd, str)
写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
- 参数
fd – 文件描述符。
str – 写入的字符串。pyton3中以byte写入 - 实例
f = os.open('b.txt', os.O_RDWR | os.O_CREAT, mode=0o755)
print("f is:", f)
os.write(f, bytes("This is test", encoding='utf-8'))
os.path模块
获取文件的属性信息
os.path.abspath(path)
返回指定路径的绝对路径
- 实例
# 获取当前目录的绝对路径
abs_path = os.path.abspath('./b.txt')
print(abs_path)
# 输出 F:\python\python-class\os模块\b.txt
os.path.basename(path)
返回文件名
- 实例
# 获取文件名
file_name = os.path.basename('./b.txt')
print(file_name)
# 输出 b.txt
os.path.dirname(path)
返回指定路径的父文件目录
- 实例
# 返回文件路径
dir_name = os.path.dirname('./b.txt')
print(dir_name)
# 输出 . 相对路径 表示当前目录
os.path.exists(path)
如果路径 path 存在,返回 True;反之返回 False。
- 实例
# 判断指定路径是否存在 本例中tmp不存在 返回False
isExist = os.path.exists('./tmp')
print(isExist)
# 输出 False
os.path.getsize(path)
返回文件大小,如果文件不存在就抛出错误
- 实例
# 返回指定文件的大小 本例中b.txt没有内容,返回0
size = os.path.getsize('./b.txt')
print(size)
# 输出 0
os.path.isfile(path)
判断路径是否为文件
# 判断当前路径是否是文件 本例中b.txt存在并且是文件 返回True
# 如果改成temp目录 返回False
isFile = os.path.isfile('./b.txt')
print(isFile)
# 输出 True
os.path.isdir(path)
判断路径是否为目录
- 实例
# 判断当前路径是否是目录 本例中temp是目录 返回True
isDir = os.path.isdir('./temp')
print(isDir)
# 输出 True
os.path.join(path1[, path2[, …]])
把目录和文件名合成一个路径 注意后面的路径前不能加‘\’,否则将会将目录覆盖,合并不成功
- 实例
# 将给定的目录和后面的文件合并成一个目录
joinPath = os.path.join(os.getcwd(), 'a', 'b')
print(joinPath)
# 输出 F:\python\python-class\os模块\a\b
# 错误示范
joinPath = os.path.join(os.getcwd(), '\\a', 'b')
print(joinPath)
# 输出 F:\a\b
os.path.split(path)
把路径分割成 dirname 和 basename,返回一个元组
- 实例
# 将路径分割成dirname 和basename,返回一个元组
split_path = os.path.split('./b.txt')
print(split_path)
# 输出 ('.', 'b.txt')
os.path.walk(path, visit, arg)
遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数 python3中没有这个方法
time
用于格式化日期和时间,时间间隔是以秒为单位的浮点小数。
time 模块下有很多函数可以转换常见日期格式
time.time()
用于获取当前时间戳,单位是秒,类型是float
import time; # 引入time模块
ticks = time.time()
print(ticks)
print(round(ticks)) #将float类型浮点数转为整数
time.gmtime()
time.localtime(time.time())
获取当前时间
t = time.gmtime()
print(t.tm_year)
print(time.strftime('%Y-%m-%d', t))
print(time.strftime('%Y-%m-%d', time.localtime(t_time))) #将时间格式转为字符串
time.strftime(format[, t])
将日期或者时间格式转换为字符串
# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Sat Mar 28 22:24:24 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
常用的日期时间格式化字符串符号:
%y | 两位数的年份表示(00-99) |
---|---|
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
json
random
threading
线程模块
常用使用方法:
t=threading.Thread(target=download_pic, args=(download_urls,))
t.start()
t.join() #对整段代码进行加锁,其他线程阻塞等待
# join是对整个线程代码进行加锁,而lock是对局部代码进行加锁,效率更高
def task():
time.sleep(3)
print("%s is running" % current_thread().getName())
global n
# 加锁 线程1获取锁对象 其它线程等待,等线程1释放锁,其他线程竞争获取锁对象依次串行执行
lock.acquire()
temp = n
time.sleep(0.5)
n = temp - 1
# 释放锁
lock.release()
if __name__ == '__main__':
n = 100
lock = Lock()
threads = []
start_time = time.time()
for i in range(100):
t = Thread(target=work)
threads.append(t)
t.start()
# t.join()
for t in threads:
t.join()
# 使用lock局部加锁 主:53.01103210449219 n:0
print('主:%s n:%s' % (time.time() - start_time, n))
multiprocessing
进程模块
常用使用方法:
p = multiprocessing.Process(target=io) #
p.start()
计算密集型使用多进程,io密集型使用多线程
第三方模块
python-docx
selenium
numpy
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎