os 模块是与操作系统交互的一个接口

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
  • os.stat_result(st_mode=33206, st_ino=14636698789082183, st_dev=3129870583, st_nlink=1, st_uid=0, st_gid=0, st_size=3176, st_atime=1523447944, st_mtime=1523447944, st_ctime=1523424883)

os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"

os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:

os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量

os.path.abspath(path) 返回path规范化的绝对路径

os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素

os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素

os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) 如果path是绝对路径,返回True

os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False

os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False

os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间

os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

sys模块(* * *)

 
sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.exc_info()    返回异常信息三元元组
sys.platform     返回操作系统平台名称
  进度条:

import sys,time
for i in range(10):
sys.stdout.write('#')
time.sleep(1)
sys.stdout.flush()
另一种方法:
import sys, time
def view_bar(num,total):
rate = float(num) / float(total)
rate_num = int(rate * 100)
r = '\r[%s%s]%d%%' % ("=" * num," " * (100 - num),rate_num,)
sys.stdout.write(r)
sys.stdout.flush() if __name__ == '__main__':
for i in range(0,101):
time.sleep(0.1)
view_bar(i,100)

shutil

shutil模块提供高级文件操作,包括文件的删除、拷贝等,也支持文件压缩。

copy()

copy(src,dst) 拷贝文件,不拷贝元数据,返回拷贝的目标文件地址;目标dst(可以是文件,也可以是目录),若dst存在则覆盖。 若src 不存在则报错 FileNotFoundError, 若src 与 dst 为同一个文件报错:SameFileError

copy2()

copy2(src,dst)  同copy(),区别是拷贝时也拷贝元数据(文件属性、创建时间等信息)实际是先copy,在copystat ,等同与unix命令: cp -p
shutil.copy2('test2.txt','test_copy2.txt')  # test_copy2.txt  

copyfile()

copyfile(src,dst.length)  与copy类似,只是目的必须是文件名, length指定读入缓存区的长度,这样将文件分片,以免占用太多内存,内部调用 copyfileobj()
print(shutil.copyfile('test.txt','test_copyfile.txt'))   # test_copyfile.txt  

copyfileobj()

copyfileobj(fsrc,fdst,length) 与copyfile类似, src与dst为文件对象 ,length为读入缓存的大小,分片
src = 'test2.txt'
dst = 'test_copyfileobj.txt'
with open(src,'rb') as fsrc:
with open(dst,'wb') as fdst:
shutil.copyfileobj(fsrc,fdst,length=1024)

copymode()

copymode(src,dst) 拷贝源文件src的权限,使dst文件的读写权限 -rw-rw-r-- 与src一致,文件的所属用户和组不改变

shutil.copyfile('/tmp/ptest/src.txt','/tmp/ptest/dst_copyfile.txt')
# 执行前:
# -rw-r--r-- 1 root root 9 Feb 1 13:27 dst_copyfile.txt
# -rw-rw-r-- 1 tibco tibco 9 Feb 1 13:25 src.txt
shutil.copymode('/tmp/ptest/src.txt','/tmp/ptest/dst_copyfile.txt')
# 执行后:
# -rw-rw-r-- 1 root root 9 Feb 1 13:27 dst_copyfile.txt
# -rw-rw-r-- 1 tibco tibco 9 Feb 1 13:25 src.txt

copystat()

copystat(src,dst) 拷贝源文件src的属性到目标文件,包括:文件权限、创建时间、最后修改时间,文件所欲用户和组不变.

shutil.copystat('/tmp/ptest/src.txt','/tmp/ptest/dst_copyfile.txt')
# 执行前
# -rw-rw-r-- 1 root root 9 Feb 1 13:27 dst_copyfile.txt
# -rwx------ 1 tibco tibco 9 Feb 1 13:25 src.txt
# 执行后
# -rwx------ 1 root root 9 Feb 1 13:25 dst_copyfile.txt
# -rwx------ 1 tibco tibco 9 Feb 1 13:25 src.txt

copytree()

拷贝目录树,简单的说就是拷贝源目录及其下面的所有子目录及文件到dst下,目标不能是存在的目录

 
shutil.copytree('/tmp/ptest/dir1','/tmp/ptest/dir2')
执行前:
ptest
├── dir1
│ ├── dir1_1
│ │ ├── dir1_1_1
│ │ │ ├── file1-1-1
│ │ │ └── file1-1-3
│ │ ├── file1-1
│ │ └── file1-2
│ └── file-1
├── dst_copyfile.txt
└── src.txt
执行后
ptest
|-- dir1
| |-- dir1_1
| | |-- dir1_1_1
| | | |-- file1-1-1
| | | `-- file1-1-3
| | |-- file1-1
| | `-- file1-2
| `-- file-1
|-- dir2
| |-- dir1_1
| | |-- dir1_1_1
| | | |-- file1-1-1
| | | `-- file1-1-3
| | |-- file1-1
| | `-- file1-2
| `-- file-1
|-- dst_copyfile.txt
`-- src.txt

rmtree()

rmtree()

move()

shutil.move("test2.txt","test")  移动文件。dst可以是文件名也可以是目录,目标文件存在则覆盖
 

文件压缩

get_archive_formats()
返回shutil支持的压缩格式
print(shutil.get_archive_formats())
# [('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('zip', 'ZIP file')]

make_archive()

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)
文件压缩,支持的格式包括:bztar,gztar,tar,zip
参数说明:
base_name:要创建的压缩文件的存放路径及名称,如aa.tar 或 /tmp/archinve/aaa.tar ,如果指定路径则默认在当前路径下
format:压缩的文件格式,比如 "zip", "tar", "bztar"    or "gztar".
root_dir: 要压缩的文件夹路径,默认当前路径
base_dir:开始压缩的目录
owner: 用户  默认当前用户
group:用户组,默认当前用户组
logger:日志对象,logging.Logger对象
 
unpack_archive(filename,extra_dir,format)解压缩文件
filename:要解压缩的文件名
extra_dir:解压的路径
format:解压缩的文件的文件格式 "zip", "tar", "bztar"    or "gztar".
# 将/tmp/ptest/aaa.tar.gz解压缩的/tmp/ptest下
shutil.unpack_archive('/tmp/ptest/aaa.tar.gz','/tmp/ptest/','gztar')
disk_usage(path) python3.x才有的新功能。返回指定磁盘的使用情况,包括:total, used, free.  支持:unix,windows
print(shutil.disk_usage(("d:/")))
#result:
usage(total=209715195904, used=14263074816, free=195452121088)

chown()

chown(path,user,group) 给指定的path路径修改所属用户和组,类似于chown path user:gropu 。python3.x中的新功能,仅支持 unix
shutil.chown('/tmp/ptest/dir1.tar.gz',user='root',group='root')
#执行前:
-rw-rw-r-- 1 tibco tibco 258 Feb 1 15:09 dir1.tar.gz
# 执行后
-rw-rw-r-- 1 root root 258 Feb 1 15:09 dir1.tar.gz

Python模块 - os , sys.shutil的更多相关文章

  1. Python常用模块os & sys & shutil模块

    OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...

  2. python模块 os&sys&subprocess&hashlib模块

    os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...

  3. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  4. Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  5. python模块之sys和subprocess以及编写简单的主机扫描脚本

    python模块之sys和subprocess以及编写简单的主机扫描脚本 1.sys模块 sys.exit(n)  作用:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.e ...

  6. python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...

  7. python模块之os sys shutil

    os模块 os模块是与操作系统交互的一个接口 #当前执行这个python文件的工作目录相关的工作路径 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir( ...

  8. Python常用模块(logging&re&时间&random&os&sys&shutil&序列化&configparser&&hashlib)

    一. logging(日志模块) 二 .re模块 三. 时间模块 四. random模块 五. os模块 六. sys模块 七. shutil模块 八. 序列化模块(json&pickle&a ...

  9. Python的os,shutil和sys模块

    *********OS*********** os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'n ...

随机推荐

  1. 用MATLAB结合四种方法搜寻罗马尼亚度假问题

    选修了cs的AI课,开始有点不适应,只能用matlab硬着头皮上了,不过matlab代码全网仅此一份,倒有点小自豪. 一.练习题目 分别用宽度优先.深度优先.贪婪算法和 A*算法求解"罗马利 ...

  2. 关于Sql server数据 MD5加密

    最近在写一个web项目时,需要在数据库中将用户密码等一类信息进行加密处理.数据加密算法有许多  ,各有各的优缺点;在  http://www.cnblogs.com/yangywyangyw/arch ...

  3. 冒泡排序及优化(Java实现)

    向大端冒泡 public class BubbleSort { public static <T extends Comparable<? super T>> void sor ...

  4. Liquibase的简单使用

    LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态.它的目标是提供一种数据库类型无关的解决方案,通过执 ...

  5. Sql Server 索引以及页和区

    索引(Index),相信大家都知道就是给表中的数据添加了一个目录,使我们可以快速检索到我们想要的数据,但这个目录是什么?SqlServer又是如何管理的?要搞明白这些,我们就要先了解sqlserver ...

  6. Java String常用方法

    字符串查找 两种查找字符串的方法,indexOf(String s)和lastIndexOf(String s). String str = "tyson-json"; int i ...

  7. 关于Maven的配置与学习

    1. 简介 官方说法:Apache Maven is a software project management and comprehension tool. Based on the concep ...

  8. 多进程浏览器、多线程页面渲染与js的单线程

    线程与进程 说到单线程,就得从操作系统进程开始说起.在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位.任务调度采用的是时间片轮转的抢占式调度方式,而进程 ...

  9. 如何在IOS上调试Hybrid应用

    最近在找关于在xcode上调试Hybrid应用的方法,比如我想进行断点调试.日志打印.屏幕适配等等,刻意去搜了下方法,虽然之前已经大致知道了,这里系统归纳一下,原文在https://developer ...

  10. Android 源代码结构

    简介 在使用Andriod SDK进行应用程序开发的时候,我们需要对源代码进行调试,有可能需要进入到某个Android API函数内部进行跟踪调试.但是,如果目标版本的SDK没有关联对应版本的源代码的 ...