::NPTEAM:: Network Programer Team

검색 :
RSS 구독 : 글 / 댓글 / 트랙백 / 글+트랙백

[Python] ExecuteCmd 커맨드 명령어 실행하기

Python에서 Command 명령어 실행하는 예제
import os
import subprocess

def ExecuteCmd(self, strCmd):
    print "[ExecuteCmd] %s" % (strCmd)
    pipe = subprocess.Popen(strCmd,
        shell=True,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)

    pipe.stdin.close()

    retOutputList = []

    while( pipe.poll() is None ):
        out = pipe.stdout.readline()
        if( out != '' ):
            print out
            retOutputList.append(out)

    retCode = pipe.poll()
    return (retCode, retOutputList)
	
def main():
	(retCode, stdout) = ExecuteCmd('svn --version')
	print 'retCode : ' + str(retCode)
	print stdout
		
if __name__ == "__main__":
	try:
		main()
	except os.error, err:
		print str(err)
2012/01/19 11:41 2012/01/19 11:41

맨 위로

[Python] 루아 스크립트 주석 '--' 왼쪽 문자열 추출 함수

def RemoveLuaComment( strLine ) :
	find_pos = strLine.find( '--', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()
2010/11/08 08:13 2010/11/08 08:13

맨 위로

[Python] 문자열에서 '=' 오른쪽 왼쪽 문자열 추출 함수

def LeftSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()


def RightSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[find_pos + 1 : len(strLine)].strip()
	return strLine.strip()
2010/11/08 08:12 2010/11/08 08:12

맨 위로

[Python] 문자열에서 영문+숫자+언더바 추출 함수

def Extract_Alparbet_Number_UnderBar( strLine ) :
	strAlparbet_Number_UnderBar = string.letters + string.digits + '_'
	strList = []
	for OneWord in strLine :
		if( OneWord in strAlparbet_Number_UnderBar ) :
			strList.append( OneWord )
	strTemp = ''.join( strList )
	return strTemp
2010/11/08 08:04 2010/11/08 08:04

맨 위로

[Python] Lua Reference Type Checker

import sys
import string


def Extract_RightSide_From_FileLines( FileLines ) :
	RightSideList = []
	for eachline in FileLines :
		if( IsExistOnlyOneEqual( eachline ) == True ) :
			RightSideValue = RightSideOfEqual( eachline )
			RightSideList.append( RightSideValue )
	return RightSideList


def Extract_LeftSide_From_FileLines( FileLines ) :
	LeftSideList = []
	for eachline in FileLines :
		if( IsExistOnlyOneEqual( eachline ) == True ) :
			LeftSideValue = LeftSideOfEqual( eachline )
			LeftSideList.append( LeftSideValue )
	return LeftSideList


def IsExistOnlyOneEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	
	find_pos = strLine.find( '=', 0 )
	if( find_pos == -1 ) :
		return False
		
	find_pos = strLine.find( '=', find_pos + 1 )
	if( find_pos == -1 ) :
		return True
		
	return False


def RemoveLuaComment( strLine ) :
	find_pos = strLine.find( '--', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()


def LeftSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()


def RightSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[find_pos + 1 : len(strLine)].strip()
	return strLine.strip()


def Extract_Alparbet_Number_UnderBar( strLine ) :
	strAlparbet_Number_UnderBar = string.letters + string.digits + '_'
	strList = []
	for OneWord in strLine :
		if( OneWord in strAlparbet_Number_UnderBar ) :
			strList.append( OneWord )
	strTemp = ''.join( strList )
	return strTemp


def RefTypeMaching( strStartKeyword, nLineNumber, strSourceLine, strRefTypeList ) :
	strSourceTempList = strSourceLine.split()
	for eachSource in strSourceTempList :
		strExtractedSource = Extract_Alparbet_Number_UnderBar( eachSource )
		
		if( strExtractedSource.startswith( strStartKeyword ) == True ) :
			if( strExtractedSource not in strRefTypeList ) :
				print 'RefType Mismatch. LineNumber : ' + str( nLineNumber ) + ', Source String : ' + strExtractedSource




def main(argv) :
	Reference_file = argv[1]
	Programed_file = argv[2]
	
	# Reference File Loading(RefTypeList)
	Ref_fstream = open( Reference_file, 'r' )
	RefFileList = Ref_fstream.xreadlines()
	RefTypeList = Extract_LeftSide_From_FileLines( RefFileList )
	Ref_fstream.close()
	
	# Programed File Loading(ProgramFileList)
	Programed_fstream = open( Programed_file, 'r' )
	ProgramFileList = Programed_fstream.readlines()
	Programed_fstream.close()
	
	# Print Type Check	
	print '---------------------------------------------------------'
	print 'Start Type Check. File Name : ' + str( argv[2] )
	print '---------------------------------------------------------'
	for i, eachProgramLine in enumerate( ProgramFileList ) :
		strRemovedComment = RemoveLuaComment( eachProgramLine )
		RefTypeMaching( 'Item_', i + 1, strRemovedComment, RefTypeList )
	print '---------------------------------------------------------'



if __name__ == "__main__" :  
    main(argv=sys.argv)  
2010/02/11 16:56 2010/02/11 16:56

맨 위로

[Python] Ini 파일 형식 라인별로 읽어서 "=" 연산자 양쪽 값 분리

import sys

def IsExistOnlyOneEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	
	find_pos = strLine.find( '=', 0 )
	if( find_pos == -1 ) :
		return False
		
	find_pos = strLine.find( '=', find_pos + 1 )
	if( find_pos == -1 ) :
		return True
		
	return False
	

def RemoveLuaComment( strLine ) :
	find_pos = strLine.find( '--', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()
	
	
def LeftSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[0 : find_pos].strip()
	return strLine.strip()
	
	
def RightSideOfEqual( strLine ) :
	strLine = RemoveLuaComment( strLine )
	find_pos = strLine.find( '=', 0 )
	if( find_pos != -1 ) :
		return strLine[find_pos + 1 : len(strLine)].strip()
	return strLine.strip()	
	

def main(argv) :
	input_file = argv[1]
	
	f = open( input_file, 'r' )
	filelist = f.readlines()
	
	for eachline in filelist :
		if( IsExistOnlyOneEqual( eachline ) == False ) :
			print "\n[Error Line] ", eachline
		else :
			print "\n[Total]\n", eachline
			print "\n[Remove Comment]\n", RemoveLuaComment( eachline )
			print "\n[Left Side]\n", LeftSideOfEqual( eachline )
			print "\n[Right Side]\n", RightSideOfEqual( eachline )
		
	f.close()
	
if __name__ == "__main__" :  
    main(argv=sys.argv)  
2010/02/10 22:31 2010/02/10 22:31

맨 위로