目标:-我需要解析具有以下输入的文件,并在状态获得批准且构建日期为最新时获取最新的(构建日期时间戳应该是最新的)位置。我提供了示例输入和输出,我在 perl 中有代码,python新手,请建议如何在python中实现
INPUT:-
Build: M1234BAAAANAAW9321.1
Location: \\dreyers\builds468\INTEGRATION\M1234BAAAANAA9321.1
Comments: Build completed, labeled, and marked for retention.
Status: Approved
BuildDate: 10/25/2012 12:51:25
Build: M1234BAAAANAAW9321.2
Location: \\crmbld01\Builds\FAILED\M1234BAAAANAA9321.2
Comments: The build is currently in a failed status.
Status: Failed
BuildDate: 10/25/2012 19:37:17
Build: M1234BAAAANAAW9321.3
Location: \\freeze\builds427\INTEGRATION\M1234BAAAANAA9321.3
Comments: Build completed, labeled, and marked for retention.
Status: Approved
BuildDate: 10/25/2012 19:43:28
OUTPUT:-\\freeze\builds427\INTEGRATION\M1234BAAAANAA9321.3
以下是实现的perl代码,我是python新手,请建议我如何对这段代码进行pythonize
$ echo 'Build: M1234BAAAANAAW9321.1
Location: \\dreyers\builds468\INTEGRATION\M1234BAAAANAAW9321.1
Comments: Build completed, labeled, and marked for retention.
Status: Approved
BuildDate: 10/25/2012 12:51:25
Build: M1234BAAAANAAW9321.2
Location: \\crmbld01\Builds\FAILED\M1234BAAAANAAW9321.2
Comments: The build is currently in a failed status.
Status: Failed
BuildDate: 10/25/2012 19:37:17
Build: M1234BAAAANAAW9321.3
Location: \\freeze\builds427\INTEGRATION\M1234BAAAANAAW9321.3
Comments: Build completed, labeled, and marked for retention.
Status: Approved
BuildDate: 10/25/2012 19:43:28
' | perl -e'
local $/ = "";
my ( $build_date, $location );
while ( <> ) {
next unless /status:\s+approved/i;
my $date = sprintf "%04d%02d%02d%02d%02d%02d", ( /builddate:\s+(\d
++)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)/i )[ 2, 0, 1, 3, 4, 5 ];
if ( !defined $build_date || $build_date lt $date ) {
( $build_date, $location ) = ( $date, /location:\s+(.+)/i );
}
}
打印“$位置\n”;' \冻结\builds427\INTEGRATION\M1234BAAAANAAW9321.3
我尝试在python中编写以下内容,似乎不起作用,我想知道是否有更好的实现来实现目标..请建议
for line_info in lines:
line_info.find('Location')
if line_info.find('Location') == 0:
# Build Location
print " Found Build location"
logString += " Found Build location\n"
location = line_info.split(" ")
location1 = location[len(location)-1]
elif line_info.find('Status') == 0:
# Status
print " Found Status"
logString += " Found Status\n"
status = line_info.split(" ")
removeEmpty(status)
status1 = status[1].strip()
if status1 != "Approved"
goto .start
elif line_info.find('BuildDate') == 0:
# Main Make
print " Found BuildDate"
logString += " Found BuildDate\n"
builddate1 = line_info.split(" ")
removeEmpty(builddate1)
builddate1 = builddate1[1]
#if builddate1 >