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


Posted in Python onApril 27, 2019

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

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

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

import os
print(os.getcwd())  #获取当前的操作目录,即当前Python脚本工作的目录路径
#os.chdir("F:\\PythonCode\\day5\\test")  #改变当前脚本工作目录,相当于shell下的cd
os.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 filename
os.rmdir(r"F:\PythonCode\day5\t")  #删除单级空目录,若目录不为空,无法删除或报错;相当于shell中rmdir filename

print(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不存在,返回False
print(os.path.isabs(r"F:\PythonCode\day5"))  #如果path是绝对路径,返回True
print(os.path.isfile(r"F:\PythonCode\day5\p_test.py"))  #如果path是一个存在的文件,返回True,否则返回False
print(os.path.isdir(r"F:\PythonCode\day5"))  #如果path是一个存在的目录,则返回True。否则返回False
print(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\day5
F:\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.py
2017/09/28 14:31        121 module_test.py
2017/09/28 14:35        237 test.py
        3 ���ļ�      427 �ֽ�
        2 ��Ŀ¼ 14,051,733,504 �����ֽ�
0
F:\PythonCode\day5
('F:\\PythonCode\\day5\\test', '1.py')
F:\PythonCode
day5
True
True
True
True
F:\day
1506656912.210523
1506656912.210523

2、sys模块

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

import sys
print(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']
win32
hello
please: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)

运行结果:

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

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

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

运行结果:

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

(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 shutil
shutil.copytree("test","test1")  #递归的去拷贝文件

运行结果:

Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
(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 shutil
shutil.make_archive("shutil_archive_test","zip","F:\PythonCode\day5")

运行结果: Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
总结:shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

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

运行结果:

===========

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

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

Python 相关文章推荐
python str与repr的区别
Mar 23 Python
详解Python装饰器由浅入深
Dec 09 Python
利用aardio给python编写图形界面
Aug 21 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
python 插入日期数据到Oracle实例
Mar 02 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 #Python
python爬取基于m3u8协议的ts文件并合并
Apr 26 #Python
python游戏开发之视频转彩色字符动画
Apr 26 #Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 #Python
python使用参数对嵌套字典进行取值的方法
Apr 26 #Python
python将视频转换为全字符视频
Apr 26 #Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 #Python
You might like
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php去掉文件前几行的方法
2015/07/29 PHP
php 人员权限管理(RBAC)实例(推荐)
2017/05/24 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
js 表单验证方法(实用)
2009/04/28 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
德国的各种媒体在线商店:Thalia.de(书籍、电子书、玩具等)
2020/10/08 全球购物
数学专业推荐信范文
2013/11/21 职场文书
植树节口号
2014/06/21 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
大学生党课心得体会
2016/01/07 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android