linux - 下面这条shell命令怎么用python写啊?
问题描述
最初的脚本是一个前辈维护的,shell脚本,太难懂了,老大让我重新用python写一遍,功能如下,就是获取svn log中的时间戳字段]我按照python的写法,将命令拼接起来,调用popen执行。

但是运行的时候报错了,如下所示:

然后我测了下cmd的前面部分,也就是 他的结果是:
他的结果是:

可见结果是正确的,所以判断问题就出现在sed这部分,还请各位前辈帮忙看看。
问题解答
回答1:你把命令直接复制到命令行能用吗?如果能用就是你组织字符串出的错,比如双引号被你漏了,比如python中'%F'与’'%F'’是不一样的,还有’2’与’2’是不一样的
回答2:刚开始工作,太拘泥于别人的思路了,我想了下直接尽可能的用python来实现功能。用python的替换功能搞定问题就好了

不用sed/grep...
# coding: utf8import re from time import strftime, strptimefrom subprocess import Popen, PIPEcmd = ’svn log’ # 不需要sedresult = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)stdout, stderr = result.communicate()for _ in re.findall(r’(?<=date>)([^<.]+).’, stdout): print(strftime('%F %T', strptime(_, '%Y-%m-%dT%H:%M:%S')))
相关文章:
1. javascript - 问一个有趣的问题: 如何将 数字 转成 金额格式2. jpa mysql 如何id自增初始值?3. python - 有一个函数名(字符串形式),如何能够调用这个函数?4. javascript - 怎么才能有效的防止网页被盗?5. java - mysql查询,这是怎么查询的呢6. nginx - 关于vue项目部署到ngnix后出现的问题7. MySQL的SELECT...FOR UPDATE究竟起什么作用8. javascript - vue使用keep-alive不能保持滚动位置问题。9. javascript - 表单提交后,后台直接返回页面,应该如何处理?10. javascript - 一个字符串转换成数字,例子就是a="2,322.222",b=’1,211.21’,如何在angualr中执行相减

 网公网安备
网公网安备