搜索

首页  >  问答  >  正文

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

最初的脚本是一个前辈维护的,shell脚本,太难懂了,老大让我重新用python写一遍,功能如下,就是获取svn log中的时间戳字段

]
我按照python的写法,将命令拼接起来,调用popen执行。

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

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

他的结果是:

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

漂亮男人漂亮男人2707 天前1122

全部回复(3)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-06-28 09:25:05

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

    回复
    0
  • 怪我咯

    怪我咯2017-06-28 09:25:05

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

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-28 09:25:05

    不用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")))
    

    回复
    0
  • 取消回复