使用python在os.system的参数中使用一行“未找到命令”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用python在os.system的参数中使用一行“未找到命令”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1380字,纯文字阅读大概需要2分钟。
内容图文
![使用python在os.system的参数中使用一行“未找到命令”](/upload/InfoBanner/zyjiaocheng/690/b10ae9db7e2b439fafdefba70824dc1f.jpg)
我是python的新手,正在从事一些xyz项目,我在其中进行第一天的过时报告,获取数据并将其重定向到linux机器上的另一个文件中
这是我的代码.
#!/usr/bin/python
import os
cur_date = os.popen("date -d '-1 day' '+%Y%m%d'").read()
print (cur_date)
os.system('zgrep "919535144580" /var/tmp/comp?/emse_revres_rdc.log.%s* | grep -v "RI" | cut -d "|" -f 9,10,23,24,26 | sort | uniq -c | sort -nr >> /var/tmp/Andy/test.txt'%cur_date)
它正在打印以下错误.
20180731
**gzip: /var/tmp/comp?/emse_revres_rdc.log.20180731.gz: No such file or directory
sh: line 1: 1: command not found**
但是,当我在shell中执行相同的命令时,它运行得很好,或者如果我手动指定日期并运行上面的命令,则它可以成功运行.
请提供相同的建议.
解决方法:
*与问题无关;您用%s替换的字符串以换行符结尾,而该换行符是破坏代码的原因.
当您使用os.popen(‘…’).read()时,您将获得…的整个输出-包括结尾的换行符,shell命令替换隐式地修剪了换行符.
最好的答案是用Python重写逻辑,但是简单的答案是使用这样的命令替换,这也避免了尝试通过字符串替换将值传递到脚本中(这是快速注入shell安全漏洞的途径) ):
shell_script = r'''
cur_date=$(date -d '-1 day' '+%Y%m%d')
zgrep "919535144580" /var/tmp/comp?/emse_revres_rdc.log."$cur_date"* | grep -v "RI" | cut -d "|" -f 9,10,23,24,26 | sort | uniq -c | sort -nr >> /var/tmp/Andy/test.txt
'''
os.system(shell_script)
就是说,如果您只想进行最短的更改,请将以下内容放在原始代码的os.system()调用之前:
cur_date = cur_date.rstrip('\n')
内容总结
以上是互联网集市为您收集整理的使用python在os.system的参数中使用一行“未找到命令”全部内容,希望文章能够帮你解决使用python在os.system的参数中使用一行“未找到命令”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。