Python模块 - os , sys.shutil
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()
copy2()
shutil.copy2('test2.txt','test_copy2.txt') # test_copy2.txt
copyfile()
print(shutil.copyfile('test.txt','test_copyfile.txt')) # test_copyfile.txt
copyfileobj()
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()
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()
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()
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()
move()
文件压缩
get_archive_formats()
print(shutil.get_archive_formats()) # [('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('zip', 'ZIP file')]
make_archive()
# 将/tmp/ptest/aaa.tar.gz解压缩的/tmp/ptest下 shutil.unpack_archive('/tmp/ptest/aaa.tar.gz','/tmp/ptest/','gztar')
print(shutil.disk_usage(("d:/"))) #result: usage(total=209715195904, used=14263074816, free=195452121088)
chown()
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