이상적으로는 단일 서브 프로세스 호출을 사용하여 모든 명령을 실행하고 실행하려는 명령 목록과 같아야합니다. 모든 명령을 쉘 스크립트로 저장하고 subprocess를 사용하여 해당 스크립트를 호출하여 비슷한 작업을 수행 할 수 있었지만 순수한 파이썬 솔루션이 필요합니다. shell = True로 명령을 실행하고 위험을 이해합니다.단일 파이썬 서브 프로세스 호출로 여러 쉘 명령을 실행하려면 어떻게해야합니까?
답변
독립형 인 경우 세미콜론을 사용하여 연결하십시오. 예를 들어
(파이썬 3)
>>> import subprocess
>>> result = subprocess.run('echo Hello ; echo World', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
>>> result
CompletedProcess(args='echo Hello ; echo World', returncode=0, stdout=b'Hello\nWorld\n')
그러나 기술적으로 그 때문에 shell=True
의 순수한 파이썬 해결책이 아니다. arg 처리는 실제로 쉘에 의해 수행됩니다. (/bin/sh -c "$your_arguments"
을 실행하는 것으로 생각할 수도 있습니다.)
좀 더 순수한 솔루션을 원하면 shell=False
을 사용해야하며 몇 가지 명령을 반복해야합니다. 지금까지 내가 아는 한, 서브 프로세스 모듈을 사용하여 여러 서브 프로세스를 직접 시작할 수있는 방법은 없습니다.
뭔가가 명령 목록을 반복해야합니다. 셸이이 작업을 수행 할 수 있습니다. 파이썬은 이것을 할 수 있습니다. – Skaperen
@ 스카프렌. 파이썬이 루핑을하고'exec()'시스템 콜을한다면, 나는 OP가 원하는 것처럼 더 순수하다고 생각할 것입니다. –
- 1. Python의 하위 프로세스에서 셸 명령을 실행하려면 어떻게해야합니까?
- 2. Bash 서브 쉘에서 쉘 스크립트를 실행하려면 어떻게해야합니까?
- 3. 쉘 스크립트에서 rails 명령 명령을 실행하려면 어떻게해야합니까?
- 4. gruntjs 작업에서 여러 셸 명령을 실행하려면 어떻게해야합니까?
- 5. 문자열 형식으로 명령을 실행하려면 어떻게해야합니까?
- 6. 파이썬 서브 프로세스 디모듈팅
- 7. 파이썬 서브 프로세스 OSError
- 8. 파이썬 서브 프로세스 파이핑
- 9. 목록에서 서브 프로세스 호출로 URL 구문 분석
- 10. with_items를 사용하여 여러 명령을 실행하려면 어떻게해야합니까?
- 11. 하위 프로세스, 모듈에서 명령을 실행하려면 팝업하십시오
- 12. 파이썬 쉘 서브 프로세스 가져 오기 호출 구문이 잘못되었습니다.
- 13. 파이썬 서브 프로세스 공식
- 14. 여러 도메인에서 단일 코드베이스를 실행하려면 어떻게해야합니까?
- 15. 단일 서버에서 여러 Neo4j 데이터베이스를 실행하려면 어떻게해야합니까?
- 16. 파이썬 - 서브 프로세스와 파이썬 쉘
- 17. Ruby를 사용하여 원격 서버에서 쉘 명령을 실행하려면 어떻게해야합니까?
- 18. rake 작업 내에서 쉘 명령을 관리자로 실행하려면 어떻게해야합니까?
- 19. 파이썬 오류 서브 프로세스
- 20. 파이썬 서브 프로세스 도움말
- 21. 파이썬 서브 프로세스 호출
- 22. 서브 프로세스
- 23. 파이썬 : 서브 프로세스의 영속 쉘 변수
- 24. VBScript에서 명령을 자동으로 실행하려면 어떻게해야합니까?
- 25. 일정한 간격으로 명령을 실행하려면 어떻게해야합니까?
- 26. 테스트 명령을 제대로 실행하려면 어떻게해야합니까?
- 27. bash의 변수에서 명령을 실행하려면 어떻게해야합니까?
- 28. Java에서 Eclipse 명령을 실행하려면 어떻게해야합니까?
- 29. os.system 대신 파이썬 서브 프로세스 사용하기
- 30. 여러 컴퓨터를 하나로 실행하려면 어떻게해야합니까?
실행하려는 명령 유형의 일반적인 예를 제공 할 수 있습니까? – idjaw
'&'/';'/'&&'명령을 함께 묶을 수 있습니까? 왜 하나의 서브 프로세스가 호출되는지 - 왜 루프를하지 않으면 일찍 종료하는 등의 제어를 할 수 있습니까? – ryachza
';'를 사용하여'subprocess.call ("do_A; do_B; do_C;", shell = True)'를 순서대로 지정하십시오. 프로그래밍 방식으로 :'call (';'.join (commands), shell = True) ' – Bakuriu