2013-05-15 9 views
0

파이썬을 사용하여 파일의 특정 텍스트 줄을 바꾸는 방법. File1.tcl이라는 파일이 있는지 확인하십시오. ":: AgtQtl :: CloseAllOutputFiles"라는 단어를 찾으십시오. 발견되면 아래 텍스트로 대체하십시오. ":: AgtQtl :: CloseAllOutputFiles"텍스트의 라인을 찾아 ...이 코드에파이썬을 사용하여 텍스트 파일의 특정 줄 바꾸기?

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 

}

: any1 ...이 함께

File1.tcl을 나를 도울 수

발견하면 ..

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

답변

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() 

희망이 있습니다. 다른 더 좋은 방법이있을 수 있습니다. 이 코드는 파일이 크면 효율적이지 않습니다.

관련 문제