0

Python を使用してファイル内の特定のテキスト行を置き換える方法。「File1.tcl」という名前があるかどうかを確認します。「::AgtQtl::CloseAllOutputFiles」という単語の特定を見つけます。見つかった場合は、以下のテキストに置き換えます。誰でもこれで私を助けることができます...

File1.tcl :

AgtQtl::SetupOutputFiles
    if { [AddAllPorts] } {
        set result [PreparePorts]
        InitPortInfo
        #
        # start the test
        #
        if { [AgtQtl::GetScriptMode] != "COMMANDLINE" } {
            ::TestGui::ShowResult None black gray -noraise
        }
        GenerateReportSection HEADER
        if { $result } {
            if [AddSubinterfaces] {
                RunTestLoop
            } else {
                set message [list "Add sub-interfaces" "FAIL"]
                GenerateReportSection BODYRECORD $message
                lappend statLog $message
            }
        } else {
            set message [list "Prepare ports" "FAIL"]
            GenerateReportSection BODYRECORD $message
            lappend statLog $message
        }
        set appData(testStopTime) [clock seconds]
        set testPassFailMsg [DeterminePassFail]
        if { $testPassFailMsg == "" } {
            set testPassFailMsg "PASSED"
        }
        set appData(testPassFailMsg) $testPassFailMsg
        GenerateReportSection FOOTER
        ::TestApp::StopTest
    }
}
AgtTsuTestState TEST_STOPPED
if { [AgtQtl::GetScriptMode] != "COMMANDLINE" } {
    switch $testPassFailMsg {
    PASSED {
        set testPassFailMsg "PASS"
        set fgColour black
        set bgColour green
       }
    default  {
        set testPassFailMsg "FAIL"
        set fgColour black
        set bgColour red
       }
    }
    ::TestGui::ShowResult $testPassFailMsg $fgColour $bgColour
}

::AgtQtl::CloseAllOutputFiles

return $result

}

このコードで...「::AgtQtl::CloseAllOutputFiles」というテキスト行を探します

見つかった場合..このコード行に置き換えます

set filelid [open "C:/Sanity_Automation/Work_Project/Output/smokeTestResult" w+]
puts $filelid
close $filelid
4

1 に答える 1

1

最も簡単な方法は、コンテンツをスキャンしながら別のファイルに書き込むことです。コードは次のとおりです。

replace_with = """
set filelid [open "C:/Sanity_Automation/Work_Project/Output/smokeTestResult" w+]
puts $filelid
close $filelid
"""
search = "AgtQtl::CloseAllOutputFiles"

fd1 = open('so.tcl')
fd2 = open('so1.tcl', 'w')

for line in fd1.readlines():
    if line.find(search) > -1:
        fd2.write(replace_with)
    else:
        fd2.write(line)

fd1.close()
fd2.close() 

それが役に立てば幸い。他にもっと良い方法があるかもしれません。ファイルが大きい場合、このコードは効率的ではありません。

于 2013-05-15T08:46:07.883 に答える