侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析

Python  /  管理员 发布于 7年前   192

本文实例讲述了Python3.5内置模块之os模块、sys模块、shutil模块用法。分享给大家供大家参考,具体如下:

1、os模块:提供对操作系统进行调用的接口

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport osprint(os.getcwd())  #获取当前的操作目录,即当前Python脚本工作的目录路径#os.chdir("F:\\PythonCode\\day5\\test")  #改变当前脚本工作目录,相当于shell下的cdos.chdir(r"F:\PythonCode\day5\test")   #与上面一句等价(推荐使用)print(os.getcwd())print(os.curdir) #返回当前目录 '.'print(os.pardir) #获取当前目录的父目录字符串名 '..'os.makedirs(r"F:\a\b\c")  #生成多层递归目录#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.removedirs(r"F:\a\b\c")  #清理空文件夹os.mkdir(r"F:\PythonCode\day5\t")  #生成单级目录,相当于shell中mkdir filenameos.rmdir(r"F:\PythonCode\day5\t")  #删除单级空目录,若目录不为空,无法删除或报错;相当于shell中rmdir filenameprint(os.listdir(r"F:\PythonCode\day5\test"))  #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印os.remove(r"F:\PythonCode\day5\test\1.py")  #删除一个文件os.rename(r"F:\PythonCode\day5\test\1.py",r"F:\PythonCode\day5\test\2.py")  #重命名文件/目录print(os.stat(r"F:\PythonCode\day5\test"))   #获取文件/目录信息print(os.sep)   #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"print(os.linesep) #输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"print(os.pathsep) #输出用于分割文件路径的字符串,win下为";",Linux下为":"print(os.environ) #查看系统的环境变量print(os.name)   #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'print(os.system("dir")) #运行shell命令,直接显示print(os.path.abspath(r"F:\PythonCode\day5"))  #返回path规范化的绝对路径print(os.path.split(r"F:\PythonCode\day5\test\1.py")) #将path分割成目录和文件名二元组返回print(os.path.dirname(r"F:\PythonCode\day5"))  #返回path的目录。其实就是os.path.split(path)的第一个元素print(os.path.basename(r"F:\PythonCode\day5"))  #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。print(os.path.exists(r"F:\PythonCode\day5"))  #如果path存在,返回True;如果path不存在,返回Falseprint(os.path.isabs(r"F:\PythonCode\day5"))  #如果path是绝对路径,返回Trueprint(os.path.isfile(r"F:\PythonCode\day5\p_test.py"))  #如果path是一个存在的文件,返回True,否则返回Falseprint(os.path.isdir(r"F:\PythonCode\day5"))  #如果path是一个存在的目录,则返回True。否则返回Falseprint(os.path.join(r"F:",r"\PythonCode",r"\day5",r"\day"))  #将多个路径组合后返回,第一个绝对路径之前的参数将被忽略print(os.path.getatime(r"F:\PythonCode\day5"))  #返回path所指向的文件或者目录的最后存取时间print(os.path.getmtime(r"F:\PythonCode\day5"))  #返回path所指向的文件或者目录的最后修改时间

运行结果:

F:\PythonCode\day5F:\PythonCode\day5\test...['2.py', 'module_test.py', 'test.py']os.stat_result(st_mode=16895, st_ino=8162774324625191, st_dev=104211, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1506609480, st_mtime=1506609480, st_ctime=1506579769)\;environ({'PROCESSOR_LEVEL': '6', 'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log', 'PROCESSOR_ARCHITECTURE': 'x86')nt ������ F �еľ��� ѧϰ�� ������к��� 0001-9713 F:\PythonCode\day5\test ��Ŀ¼2017/09/28 22:38  <DIR>     .2017/09/28 22:38  <DIR>     ..2017/09/28 22:37        69 2.py2017/09/28 14:31        121 module_test.py2017/09/28 14:35        237 test.py        3 ���ļ�      427 �ֽ�        2 ��Ŀ¼ 14,051,733,504 �����ֽ�0F:\PythonCode\day5('F:\\PythonCode\\day5\\test', '1.py')F:\PythonCodeday5TrueTrueTrueTrueF:\day1506656912.2105231506656912.210523

2、sys模块

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport sysprint(sys.argv)   #命令行参数List,第一个元素是程序本身路径print(sys.version) #获取Python解释程序的版本信息print(sys.path)   #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值print(sys.platform) #返回操作系统平台名称sys.stdout.write('please:')  #标准输出,写入字符串输出到屏幕val = sys.stdin.readline()[:-1]  #标准输入print(val)sys.exit(0)     #退出程序,正常退出时exit(0)

运行结果:

['F:/PythonCode/day5/sys_module.py']3.5.2 |Anaconda 4.2.0 (32-bit)| (default, Jul 5 2016, 11:45:57) [MSC v.1900 32 bit (Intel)]['F:\\PythonCode\\day5', 'F:\\PythonCode', 'C:\\Users\\Administrator\\Anaconda3\\python35.zip', 'C:\\Users\\Administrator\\Anaconda3\\DLLs', 'C:\\Users\\Administrator\\Anaconda3\\lib', 'C:\\Users\\Administrator\\Anaconda3', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages\\Sphinx-1.4.6-py3.5.egg', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages\\win32', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\Users\\Administrator\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.5.egg']win32helloplease:hello

3、shutil模块:高级的文件、文件夹、压缩包处理模块

(1)将文件内容拷贝到另一个文件中,可以部分内容――shutil.copyfileobj(fsrc, fdst[, length])

f1 = open("p_test.py",encoding="utf-8")f2 = open("p1.py","w",encoding="utf-8")#将文件p_test.py内容拷贝到另一个文件p1.py中,可以部分内容shutil.copyfileobj(f1,f2)

运行结果:


(2)拷贝文件――shutil.copyfile(src, dst)

import shutilshutil.copyfile("p1.py","p2.py")  #拷贝文件

运行结果:


(3)仅拷贝权限(内容、组、用户均不变)――shutil.copymode(src, dst)

(4)拷贝状态的信息,包括:mode bits, atime, mtime, flags――shutil.copystat(src, dst)

(5)拷贝文件和权限――shutil.copy(src, dst)

(6)拷贝文件和状态信息――shutil.copy2(src, dst)

(7)递归的去拷贝文件:

shutil.ignore_patterns(*patterns)shutil.copytree(src, dst, symlinks=False, ignore=None)
import shutilshutil.copytree("test","test1")  #递归的去拷贝文件

运行结果:


(8)递归的去删除文件――shutil.rmtree(path[, ignore_errors[, onerror]])

(9)递归的去移动文件――shutil.move(src, dst)

(10)创建压缩包并返回文件路径,例如:zip、tar――shutil.make_archive(base_name, format,...)

  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    如:www                        =>保存至当前路径
    如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要压缩的文件夹路径(默认当前目录)
  • owner: 用户,默认当前用户
  • group: 组,默认当前组
  • logger: 用于记录日志,通常是logging.Logger对象
import shutilshutil.make_archive("shutil_archive_test","zip","F:\PythonCode\day5")

运行结果:
总结:shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

import zipfilez = zipfile.ZipFile("day5.zip","w")z.write("p1.py")print("===========")z.write("p2.py")z.close()

运行结果:

===========



更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。


  • 上一条:
    Python3.5内置模块之time与datetime模块用法实例分析
    下一条:
    Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客