복붙노트

[PYTHON] Python에서 순차적으로 명령 실행

PYTHON

Python에서 순차적으로 명령 실행

한 줄에 여러 명령을 실행하고 싶습니다.

ie (다만 나의 필요를 설명하기 위하여) :

cmd (셸)

그때

cd dir

ls

ls의 결과를 읽으십시오.

하위 프로세스 모듈에 대한 아이디어가 있습니까?

최신 정보:

cd 디렉토리와 ls는 단지 예일뿐입니다. 복잡한 명령 (파이프 라이닝없이 특정 순서대로 실행)을 실행해야합니다. 사실, 하나의 서브 프로세스 셸과 그 위에서 많은 명령을 실행할 수있는 기능을 원합니다.

해결법

  1. ==============================

    1.일련의 명령을 쉽게 실행할 수있는 방법이 있습니다.

    일련의 명령을 쉽게 실행할 수있는 방법이 있습니다.

    하위 프로세스에서 다음을 사용하십시오.

    "command1; command2; command3"
    

    또는 창문이 막히면 몇 가지 선택 사항이 있습니다.

    이렇게 "" "s"를 사용하십시오.

    """
    command1
    command2
    command3
    """
    

    또는 단편적인 일을해야한다면, 이와 같이해야합니다.

    class Command( object ):
        def __init__( self, text ):
            self.text = text
        def execute( self ):
            self.proc= subprocess.Popen( ... self.text ... )
            self.proc.wait()
    
    class CommandSequence( Command ):
        def __init__( self, *steps ):
            self.steps = steps
        def execute( self ):
            for s in self.steps:
                s.execute()
    

    그러면 일련의 명령을 작성할 수 있습니다.

  2. ==============================

    2.그렇게하려면 다음을 수행해야합니다.

    그렇게하려면 다음을 수행해야합니다.

  3. ==============================

    3.예, subprocess.Popen () 함수는 프로세스를 실행하는 디렉토리를 설정할 수있는 cwd 키워드 인수를 지원합니다.

    예, subprocess.Popen () 함수는 프로세스를 실행하는 디렉토리를 설정할 수있는 cwd 키워드 인수를 지원합니다.

    쉘의 첫 번째 단계는 필요하지 않을 것입니다. ls를 원한다면 쉘을 통해 실행할 필요가 없습니다.

    물론, 원하는 디렉토리를 ls의 인수로 전달할 수도 있습니다.

    업데이트 : 일반적인 쉘의 경우 cd가 쉘 자체에서 구현되지만 디스크의 외부 명령은 아니라는 점에 유의할 가치가 있습니다. 이는 프로세스의 현재 디렉토리를 변경해야하기 때.에 프로세스 내에서 수행되어야합니다. 커맨드는 자식 프로세스로 실행되고 쉘에 의해 생성되므로이 작업을 수행 할 수 없습니다.

  4. ==============================

    4.'foo'가 포함 된 모든 파일에서 'bar'찾기 :

    'foo'가 포함 된 모든 파일에서 'bar'찾기 :

    from subprocess import Popen, PIPE
    find_process = Popen(['find', '-iname', '*foo*'], stdout=PIPE)
    grep_process = Popen(['xargs', 'grep', 'bar'], stdin=find_process.stdout, stdout=PIPE)
    out, err = grep_process.communicate()
    

    'out'과 'err'은 표준 출력과 오류 출력을 포함하는 문자열 객체입니다.

  5. ==============================

    5.파이썬 스크립트 아래에 3 가지 기능이 있습니다.

    파이썬 스크립트 아래에 3 가지 기능이 있습니다.

    import sys
    import subprocess
    
    def cd(self,line):
        proc1 = subprocess.Popen(['cd'],stdin=subprocess.PIPE)
        proc1.communicate()
    
    def ls(self,line):
        proc2 = subprocess.Popen(['ls','-l'],stdin=subprocess.PIPE)
        proc2.communicate()
    
    def dir(silf,line):
        proc3 = subprocess.Popen(['cd',args],stdin=subprocess.PIPE)
        proc3.communicate(sys.argv[1])
    
  6. from https://stackoverflow.com/questions/359347/execute-commands-sequentially-in-python by cc-by-sa and MIT license