Heim  >  Fragen und Antworten  >  Hauptteil

linux - Wie schreibe ich den folgenden Shell-Befehl in Python?

Das ursprüngliche Skript wurde von einem Senior verwaltet und war zu schwer zu verstehen. Der Chef hat mich gebeten, es erneut in Python zu schreiben, nämlich das Zeitstempelfeld im SVN abzurufen log

]
Ich habe die Anweisungen von Python befolgt. Die Art und Weise, es zu schreiben, besteht darin, die Befehle zusammenzufügen und popen aufzurufen, um sie auszuführen.

Aber beim Ausführen wurde ein Fehler gemeldet, wie unten gezeigt:

Dann habe ich den vorderen Teil von cmd gemessen, das ist

Das Ergebnis ist:

Es ist ersichtlich, dass das Ergebnis korrekt ist, daher tritt das Beurteilungsproblem im Sed-Teil auf. Bitte helfen Sie mir bei Ihren Senioren.

漂亮男人漂亮男人2669 Tage vor1095

Antworte allen(3)Ich werde antworten

  • 我想大声告诉你

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

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

    Antwort
    0
  • 怪我咯

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

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

    Antwort
    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")))
    

    Antwort
    0
  • StornierenAntwort