python常用模块使用介绍

基础模块

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)
%H24小时制小时数(0-23)
%I12小时制小时数(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编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销: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.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
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)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.3.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

Python是一种强大的编程语言,具有丰富的标准库和第三方库,以下是一些常用Python模块介绍: 1. NumPy:一个用于数值计算的库,提供了多维数组对象和一系列的数学函数,是进行科学计算的基础库。 2. Pandas:一个用于数据分析和数据处理的库,提供了高效的数据结构和数据分析工具,能够轻松处理和处理复杂的数据。 3. Matplotlib:一个用于绘制图表和可视化数据的库,提供了各种绘图函数和API,能够生成高质量的图表、图形和动画。 4. Scikit-learn:一个用于机器学习和数据挖掘的库,提供了各种分类、回归、聚类、降维等算法,以及常用的数据预处理和模型评估工具。 5. Tensorflow:一个用于构建和训练神经网络的库,广泛应用于深度学习领域。它具有灵活的架构和强大的计算能力,支持分布式计算和GPU加速。 6. Requests:一个用于发送HTTP请求的库,能够方便地进行网页抓取、接口调用和数据获取等操作,是进行网络爬虫的常用工具之一。 7. Beautiful Soup:一个用于解析HTML和XML文档的库,提供了简单而灵活的API,能够方便地从网页中提取所需的数据。 8. Flask:一个用于构建Web应用程序的微型框架,简洁而灵活,易于学习和使用,适合构建小型的、轻量级的Web应用。 9. Django:一个用于构建大型和复杂Web应用程序的全功能框架,提供了完整的开发工具和功能,包括ORM、表单处理、用户认证等。 这些只是Python中一小部分常用模块介绍Python还有许多其他优秀的库,可以根据具体需求选择合适的模块使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值