我们可以编写自己的模块,也可以使用大量的Python标准库模块和开源模块,站在巨人的肩上行动,正因为如此,使得当今python如此热门,今天就让我们来一起领略python开源库的魅力。
python解释器相关:sys
操作系统:os
json加载生成:json
正则表达式:re
随机数:random
多线程:multiprocessing
网页爬取:scrapy、requests、BeautifulSoup
WEB服务:django、flask
数据库:PyMySQL、redis
Excel读写:xlrd、xlwt
大数据:PySpark
数据计算:numpy、scipy
图表展示:matplotlib
机器学习:scikit-learn
深度学习:百度PaddlePaddle、谷歌TensorFlow
pip安装
就是在cmd命令行使用pip命令安装
pycharm安装
File-setting--project interpreter--点击+号--搜索框输入模块名称并搜索--资源池中选中下载资源--点击install Package--OK
使用Anaconda版本Python(我用的就是)
该包已经预先包括了数据科学的几乎所有开源包,普通人搞数据分析完全可以了。
sys模块
负责程序与python解释器的交互,提供函数和变量用于操控python的运行时环境
sys.argv 类型为list,命令行参数列表,第一个元素是脚本名称或路径
sys.path 类型为list,模块的搜索路径
它使用PYTHONPATH环境变量初始化
第一个元素是当前目录,意思是每次会首先搜索当前目录下的模块
用户在程序中可以自己修改sys.path,设置自己的模块搜索路径
sys.exit(n) 退出程序,n等于0代表正常退出,不等于0代表异常退出,在shell可以用$?获得退出值。
import sys# 打印当前文件路径for row in sys.argv: print(row)print(sys.argv)print("#"*50) # 打印分隔符# 打印模块搜索路径,第一个元素是当前目录for row in sys.path: print(row)print("#"*50) //打印分隔符sys.exit(0)
运行结果:D:\Anaconda3\python.exe D:/python/易灵--零基础Python课程资料/课程相关代码/test/ossys_test2/sys_test2.pyD:/python/易灵--零基础Python课程资料/课程相关代码/test/ossys_test2/sys_test2.py['D:/python/易灵--零基础Python课程资料/课程相关代码/test/ossys_test2/sys_test2.py']##################################################D:\python\易灵--零基础Python课程资料\课程相关代码\test\ossys_test2D:\python\易灵--零基础Python课程资料\课程相关代码\testD:\Anaconda3\python37.zipD:\Anaconda3\DLLsD:\Anaconda3\libD:\Anaconda3C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packagesD:\Anaconda3\lib\site-packagesD:\Anaconda3\lib\site-packages\win32D:\Anaconda3\lib\site-packages\win32\libD:\Anaconda3\lib\site-packages\Pythonwin##################################################Process finished with exit code 0
os模块
负责程序与操作系统交互,提供访问操作系统底层的接口
os.environ 字典类型,读取系统环境变量
os.remove(path) 删除文件
os.rename(src,dst) 重命名文件或目录,可实现文件移动
os.mkdir(dir) 创建目录
os.rmdir(dir) 删除目录,目录必须为空
os.listdir(path) 返回列表,列出目录下的文件和目录
os.path.basename(path) 提取路径参数中的文件名
os.path.dirname(path) 提取路径参数中的目录名
os.path.split(path) 拆分path为(目录名, 文件名)
os.path.splitext(path) 拆分path(文件名, 后缀名)
os.path.exists(path) 判断指定的文件或目录是否存在
os.path.isdir(path) 判断path参数是否是目录
os.path.isfile(path) 判断path参数是否是普通文件
In [7]: pwdOut[7]: 'C:\\Users\\Administrator'In [8]: import osIn [10]: os.remove("ttt.txt")In [11]: os.rename("aaa.txt","bbb.txt")In [14]: os.mkdir("new")In [15]: os.rmdir("new")In [19]: os.listdir("C:/Users/Administrator/abc")Out[19]: ['1.txt']In [20]: os.path.basename("C:/Users/Administrator/abc")Out[20]: 'abc'In [21]: os.path.dirname("C:/Users/Administrator/abc")Out[21]: 'C:/Users/Administrator'In [22]: os.path.split("C:/Users/Administrator/abc")Out[22]: ('C:/Users/Administrator', 'abc')In [26]: pwdOut[26]: 'C:\\Users\\Administrator'In [27]: os.path.splitext("result.txt")Out[27]: ('result', '.txt')In [28]: os.path.exists("new")Out[28]: FalseIn [29]: os.path.exists("data")Out[29]: TrueIn [31]: os.path.isdir("bbb")Out[31]: FalseIn [32]: os.path.isfile("bbb")Out[32]: FalseIn [33]: os.path.isfile("bbb.txt")Out[33]: True
实例操练:
提供目录名,实现目录下文件按后缀名整理。
"""按后缀名清理文件夹程序"""import sysimport osdef cleanup(dirpath): """ 对目录按照后缀名进行清理 步骤1:用字典按后缀名收集对应的文件 步骤2:如果后缀名的目录不存在,则创建 步骤3:移动文件到目标目录 :param dirpath: :return: """ # key:value = ext:list(fname) ext_fnames = {} for fname in os.listdir(dirpath): fdir, fileext = os.path.splitext(fname) # 取出.jpg前面的. fileext = fileext[1:] if fileext not in ext_fnames: ext_fnames[fileext] = [] ext_fnames[fileext].append(fname) for ext,fnames in ext_fnames.items(): ext_dir = "%s/%s"%(dirpath, ext) if not os.path.isdir(ext_dir): os.mkdir(ext_dir) for fname in fnames: old_fpath = "%s/%s"%(dirpath, fname) new_fpath = "%s/%s"%(ext_dir, fname) os.rename(old_fpath, new_fpath)if __name__ == "__main__": # 使得能够import if len(sys.argv) != 2: raise Exception("please give the cleanup dir path") dirpath = sys.argv[1] if not os.path.isdir(dirpath): raise Exception("%s is not a dir"%dirpath) cleanup(dirpath) print("success")