前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门(五):常用标准库sys和os

Python入门(五):常用标准库sys和os

作者头像
披头
发布2019-12-26 09:45:22
1.7K0
发布2019-12-26 09:45:22
举报
文章被收录于专栏:datartisandatartisan

我们可以编写自己的模块,也可以使用大量的Python标准库模块和开源模块,站在巨人的肩上行动,正因为如此,使得当今python如此热门,今天就让我们来一起领略python开源库的魅力。

  • Python标准库常见模块

python解释器相关:sys

操作系统:os

json加载生成:json

正则表达式:re

随机数:random

多线程:multiprocessing

  • Python第三方开源库常见模块(需安装)

网页爬取:scrapy、requests、BeautifulSoup

WEB服务:django、flask

数据库:PyMySQL、redis

Excel读写:xlrd、xlwt

大数据:PySpark

数据计算:numpy、scipy

图表展示:matplotlib

机器学习:scikit-learn

深度学习:百度PaddlePaddle、谷歌TensorFlow

  • Python模块安装方法

pip安装

就是在cmd命令行使用pip命令安装

pycharm安装

File-setting--project interpreter--点击+号--搜索框输入模块名称并搜索--资源池中选中下载资源--点击install Package--OK

使用Anaconda版本Python(我用的就是)

该包已经预先包括了数据科学的几乎所有开源包,普通人搞数据分析完全可以了。

  • Python标准库sys和os介绍

sys模块

负责程序与python解释器的交互,提供函数和变量用于操控python的运行时环境

sys.argv 类型为list,命令行参数列表,第一个元素是脚本名称或路径

sys.path 类型为list,模块的搜索路径

它使用PYTHONPATH环境变量初始化

第一个元素是当前目录,意思是每次会首先搜索当前目录下的模块

用户在程序中可以自己修改sys.path,设置自己的模块搜索路径

sys.exit(n) 退出程序,n等于0代表正常退出,不等于0代表异常退出,在shell可以用$?获得退出值。

代码语言:javascript
复制
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)
代码语言:javascript
复制
运行结果: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参数是否是普通文件

代码语言:javascript
复制
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]: False
In [29]: os.path.exists("data")Out[29]: True
In [31]: os.path.isdir("bbb")Out[31]: False
In [32]: os.path.isfile("bbb")Out[32]: False
In [33]: os.path.isfile("bbb.txt")Out[33]: True

实例操练:

提供目录名,实现目录下文件按后缀名整理。

代码语言:javascript
复制
"""按后缀名清理文件夹程序"""import sysimport os
def 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")
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐享数据8090 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档