[PYTHON] Python에서 순차적으로 명령 실행
PYTHONPython에서 순차적으로 명령 실행
한 줄에 여러 명령을 실행하고 싶습니다.
ie (다만 나의 필요를 설명하기 위하여) :
cmd (셸)
그때
cd dir
과
ls
ls의 결과를 읽으십시오.
하위 프로세스 모듈에 대한 아이디어가 있습니까?
최신 정보:
cd 디렉토리와 ls는 단지 예일뿐입니다. 복잡한 명령 (파이프 라이닝없이 특정 순서대로 실행)을 실행해야합니다. 사실, 하나의 서브 프로세스 셸과 그 위에서 많은 명령을 실행할 수있는 기능을 원합니다.
해결법
-
==============================
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.그렇게하려면 다음을 수행해야합니다.
그렇게하려면 다음을 수행해야합니다.
-
==============================
3.예, subprocess.Popen () 함수는 프로세스를 실행하는 디렉토리를 설정할 수있는 cwd 키워드 인수를 지원합니다.
예, subprocess.Popen () 함수는 프로세스를 실행하는 디렉토리를 설정할 수있는 cwd 키워드 인수를 지원합니다.
쉘의 첫 번째 단계는 필요하지 않을 것입니다. ls를 원한다면 쉘을 통해 실행할 필요가 없습니다.
물론, 원하는 디렉토리를 ls의 인수로 전달할 수도 있습니다.
업데이트 : 일반적인 쉘의 경우 cd가 쉘 자체에서 구현되지만 디스크의 외부 명령은 아니라는 점에 유의할 가치가 있습니다. 이는 프로세스의 현재 디렉토리를 변경해야하기 때.에 프로세스 내에서 수행되어야합니다. 커맨드는 자식 프로세스로 실행되고 쉘에 의해 생성되므로이 작업을 수행 할 수 없습니다.
-
==============================
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.파이썬 스크립트 아래에 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])
from https://stackoverflow.com/questions/359347/execute-commands-sequentially-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 문자열을 분할하지 않고 튜플로 변환 (0) | 2018.11.23 |
---|---|
[PYTHON] 최신 종속성에도 불구하고 파이썬 요청에 SSL 오류가 발생했습니다. (0) | 2018.11.23 |
[PYTHON] 입력을 숫자로 읽으려면 어떻게해야합니까? (0) | 2018.11.23 |
[PYTHON] N 포인트와 numpy / scipy에서의 참조 간의 효율적인 거리 계산 (0) | 2018.11.23 |
[PYTHON] MySQL 오류 : 2013, "초기 통신 패킷 읽기 중, 시스템 오류 : 0"에서 MySQL 서버 연결이 끊어졌습니다. (0) | 2018.11.23 |