python调用系统_python调用系统命令的方法

我写的备份文件的程序里,通过os模块的system()方法调用了系统的rar.exe命令,这个方法会返回一个变量exit_status。

# 用winrar的rar命令压缩文件

zip_command = "rar a %s %s" %(target_dir + target_file, source)

# 执行压缩打包命令

if os.system(zip_command)==0:

print('备份成功')

else:

print('备份失败')

那个程序还调用了wmic命令,并且在wmic命令的结果里查找字符串,这时候用的是os模块的

popen()方法,这个方法返回一个pipe对象,允许read或者write(但不允许同时读和写)。

# 确认PATH变量里是否有winrar目录

path_value = os.popen('wmic ENVIRONMENT where "name=\'path\'" get VariableValue /value')

have_rar = path_value.read().find('WinRAR')

if have_rar == '-1':

print '请在系统PATH变量里设置WinRAR的路径'

sys.exit()如果需要同时读写一个管道,可以用popen2(),这篇文档解释了popen()和popen2()的区别:

http://www.voidcn.com/article/p-oipvcveb-tx.html

备份数据库的程序里,用到了另一个方法,就是使用subprocess模块的call()方法来执行系统命令:

# 调用sqlcmd命令备份数据库

# os.system()不能正常执行backup_db_cmd命令,因为它没有正常处理sql_cmd里的空格。

subprocess.call(backup_db_cmd)

os.system("d:\tools\test.exe")没有问题,但是os.system(

"D:\\Program Files\\Microsoft SQL Server\\90\\Tools\\Binn\\sqlcmd.exe")的时候就执行失败了,因为参数里含有空格,system()不能正常执行,这里的解决的方法是用subprocess.call()替换os.system()。

subprocess.call()本来就是用来代替os.system()的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值