python怎么运行sh文件,
这篇文章介绍了计算机编程语言使用模块操作文件、子流程运行子程序的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
一、shutil模块(了解):高级的文件、文件夹、压缩包处理模块。
导入技能
# shutil.copyfileobj(fsrc,fdst[,length]),将文件内容拷贝到另一个文件中
舒蒂尔。复制文件对象(打开( old。XML , r ),open(new.xml , w ))
# shutil.copyfile(src,dst),拷贝文件
shutil.copyfile(f1.log , f2.log) #目标文件无需存在
# shutil.copymode(src,dst),仅拷贝权限。内容、组、用户均不变
shutil.copymode(f1.log , f2.log) #目标文件必须存在
# shutil.copystat(src,dst),仅拷贝状态的信息,包括:模式位、atime、mtime、标志
shutil.copystat(f1.log , f2.log) #目标文件必须存在
# shutil.copy(src,dst),拷贝文件和权限
shutil.copy(f1.log , f2.log )
# shutil.copy2(src,dst),拷贝文件和状态信息
shutil.copy2(f1.log , f2.log )
#舒提尔。ignore _ patterns(*模式)
# shutil.copytree(src,dst,symlinks=False,ignore=None),递归的去拷贝文件夹
# 目标目录不能存在,注意对文件夹2目录父级目录要有可写权限,忽略的意思是排除
shutil.copytree(folder1 , folder2 ,ignore=shut il。ignore _ patterns( * .pyc , tmp* ))
# shutil.rmtree(path[,ignore_errors[,onerror]]),递归的去删除文件
shutil.rmtree(folder1 )
# shutil.move(src,dst),递归的去移动文件,它类似平均变化命令,其实就是重命名
shutil.move(folder1 , folder3 )
# shutil.make_archive(基本名称,格式,),创建压缩包并返回文件路径,例如:zip、tar
基本名称:压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,如data_bak=保存至当前路径;/tmp/data_bak=保存至/tmp/
格式:压缩包种类、zip、tar、bztar、gztar
根目录:要压缩的文件夹路径(默认当前目录)
所有者:用户,默认当前用户
组:组,默认当前组
记录器:用于记录日志,通常是伐木。记录器对象
# 将/数据下的文件打包放置当前程序目录
ret=shutil。make _ archive( data _ bak , gztar ,root_dir=/data )
# 将/数据下的文件打包放置/tmp/目录
ret=shutil。make _ archive(/tmp/data _ bak , gztar ,root_dir=/data )
模块对压缩包的处理是调用压缩文件和目标文件两个模块来进行的,详细:
1、 zipfile压缩解压缩
导入活力文件
# 压缩
z=zipfile .ZipFile(laxi.zip , w )
z.write(a.log )
z.write(data.data )
关闭()
# 解压
z=zipfile .ZipFile(laxi.zip , r )
z.extractall(path= . )
关闭()
2、 tarfile压缩解压缩
导入目标文件
# 压缩
t=tarfile.open(/tmp/egon.tar , w )
t.add(/test1/a.py ,arcname=a.bak )
t.add(/test1/b.py ,arcname=b.bak )
关闭()
# 解压
t=tarfile.open(/tmp/egon.tar , r )
t.extractall(/egon )
关闭()
二、subprocess模块(了解):运行子程序
子过程模块允许你去创建一个新的进程让其执行另外的程序,并与它进行通信,获取标准的输入、标准输出、标准错误以及返回码等。
更多查看官网:https://docs.python.org/2/library/subprocess.html?突出显示=子流程#常用参数
导入子流程
sh-3.2 # ls/Users/nick/Desktop grep txt $
mysql.txt
tt.txt
事物。文本文件(文本文件)
res1=子流程popen( ls/Users/李杰/桌面,shell=True,stdout=子进程。管道)
res=子流程Popen(grep txt$ ,shell=True,stdin=res1.stdout,stdout=subprocess .管道)
print(res.stdout.read().解码( utf-8 ))
# 下面这段等同于上面,但是上面的优势在于,一个数据流可以和另外一个数据流交互,可以通过爬虫得到结果然后交给grep。
res1=子流程popen( ls/Users/李杰/桌面grep txt$ ,shell=True,stdout=子进程。管道)
print(res1.stdout.read().解码( utf-8 ))
# windows下:
# dir findstr test*
# dir findstr txt$
1=subprocess . popen(r dir " c : \ users \ administrator \ pycharm projects \ test \ function preparation " ,shell=true,stdout=subprocess.pipe)
res=子流程。Popen(findstr test* ,shell=True,stdin=res1.stdout,stdout=subprocess。管道)
# subprocess使用当前系统的默认代码,结果是字节,需要在windows下用gbk解码。
print(res.stdout.read()。解码( gbk )
关于Python使用shutil操作文件和子进程运行子程序的这篇文章到此为止。希望对大家的学习有所帮助,也希望大家能支持盛行的IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。