python怎么运行sh文件,

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: