下面这条shell命令怎么用python写啊?

最初的脚本是一个前辈维护的,shell脚本,太难懂了,老大让我重新用python写一遍,功能如下,就是获取svn log中的时间戳字段
clipboard.png
]
我按照python的写法,将命令拼接起来,调用popen执行。
clipboard.png

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

clipboard.png

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

clipboard.png

可见结果是正确的,所以判断问题就出现在sed这部分,还请各位前辈帮忙看看。

阅读 4.3k
3 个回答

你把命令直接复制到命令行能用吗?如果能用就是你组织字符串出的错,比如双引号被你漏了,比如python中"%F"与'"%F"'是不一样的,还有'\2'与'\\2'是不一样的

刚开始工作,太拘泥于别人的思路了,我想了下直接尽可能的用python来实现功能。用python的替换功能搞定问题就好了

clipboard.png

不用sed/grep...

# coding: utf8
import re 
from time import strftime, strptime
from subprocess import Popen, PIPE

cmd = 'svn log' # 不需要sed
result = 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")))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题