ls-2018

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.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.platform       返回操作系统平台名称
  进度条:
                
import sys,time
for i in range(10):
    sys.stdout.write('#')
    time.sleep(1)
    sys.stdout.flush()

 

shutil

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

copy()

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

 

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()
unpack_archive(filename,extra_dir,format)解压缩文件
filename:要解压缩的文件名
extra_dir:解压的路径
format:解压缩的文件的文件格式 "zip", "tar", "bztar"    or "gztar".
[python] view plain copy
 
  1. # 将/tmp/ptest/aaa.tar.gz解压缩的/tmp/ptest下  
  2. shutil.unpack_archive('/tmp/ptest/aaa.tar.gz','/tmp/ptest/','gztar')  
disk_usage
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  

 

相关文章: