解析Python的输出

2024-10-05 19:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的软件输出以下两种类型的输出:

-rwx------ Administrators/Domain Users  456220672   0% 2018-04-16 16:04:40 E:\\_WiE10-18.0.100-77.iso

-rwxrwx--- Administrators/unknown        6677   0% 2018-04-17 01:33:23 E:\\program files\\cluster groups\\sql server (mssqlserver)\\logs\\progress-MOD-1523883344023-3001-Windows.log

我想从两个输出中获取文件名:

  • E:\\_WiE10-18.0.100-77.iso,对于第一个
  • E:\\program files\\cluster groups\\sql server (mssqlserver)\\logs\\progress-MOD-1523883344023-3001-Windows.log,对于第二个

如果我使用类似下面的代码,如果第二个参数中有空格,它将不起作用。如果域用户名中没有空格,则可以使用。在

^{pr2}$

如何单独获取所有参数,包括文件名?在


Tags: logmodsqlserverwindowsisofilesprogram
3条回答

除了使用regex之外,您还可以尝试类似的方法。在

output = '-rwx    ... 2018-04-16 16:04:40 E:\\\\_WiE10-18.0.100-77.iso'

drive_letter_start = output.find(':\\\\')
filename = output[drive_letter_start - 1:]

它查找第一个出现的':\\',并获取子字符串之前的驱动器号(即':\\')和子字符串后的完整文件路径。在

编辑
与这个答案相比,帕特里克·阿特纳的answer更好并且完全回答了OP的问题。这只包括捕获文件路径。如果有人觉得有用,我就把这个答案留在这里。在

你可以使用一个正则表达式,比如

\b[A-Z]:\\\\.+

如果regex是一个选项:

text = """-rwx    Administrators/Domain Users  456220672   0% 2018-04-16 16:04:40 E:\\_WiE10-18.0.100-77.iso

-rwxrwx - Administrators/unknown        6677   0% 2018-04-17 01:33:23 E:\\program files\\cluster groups\\sql server (mssqlserver)\\logs\\progress-MOD-1523883344023-3001-Windows.log"""

import re

for h in re.findall(r"^.*?\d\d:\d\d:\d\d (.*)",text,flags=re.MULTILINE):
    print(h)

输出:

^{pr2}$

模式说明:

模式r"^.*?\d\d:\d\d:\d\d (.*)"查找linestart '^'+尽可能少的任何东西{}+时间戳{}后跟一个空格,并将其后面的所有内容捕获到一个组中。在

{cd5}用于它的标志。在


编辑:

捕捉个别事物需要更多的捕捉群体:

import re

for h in re.findall(r"^([rwexXst-]+) ([^0-9]+) +\d+.+? +(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (.*)",text,flags=re.MULTILINE):
#                       ^^^^^^^^^^^^ ^^^^^^^^           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
#                          flags     grpName                               datetime          filename
    for k in h:
        print(k)
    print("")

输出:

-rwx   
Administrators/Domain Users 
2018-04-16 16:04:40
E:\_WiE10-18.0.100-77.iso

-rwxrwx -
Administrators/unknown       
2018-04-17 01:33:23
E:\program files\cluster groups\sql server (mssqlserver)\logs\progress-MOD-1523883344023-3001-Windows.log

相关问题 更多 >