나는 얼마 전에 이것을 어딘가에서 읽었지만 그것을 찾을 수없는 것 같습니다. 터미널에서 명령을 실행 한 다음 결과를 출력하는 명령을 찾으려고합니다.
예 : 스크립트는 다음과 같습니다.
command 'ls -l'
터미널에서 해당 명령을 실행 한 결과가 나옵니다.
답변
이를 수행하는 방법에는 여러 가지가 있습니다.
간단한 방법은 os 모듈을 사용하는 것입니다.
import os
os.system("ls -l")
하위 프로세스 모듈을 사용하면 더 복잡한 작업을 수행 할 수 있습니다. 예 :
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
답변
하위 프로세스 모듈 사용을 선호합니다.
from subprocess import call
call(["ls", "-l"])
이유는 스크립트에서 일부 변수를 전달하려는 경우 예를 들어 코드의 다음 부분을 취하는 매우 쉬운 방법을 제공하기 때문입니다.
abc = a.c
call(["vim", abc])
답변
실제로 하위 프로세스에 대한 모든 질문은 좋은 읽기가 될 것입니다.
답변
명령도 살펴 봐야합니다.
이것은 길이 2의 튜플을 반환합니다. 첫 번째는 반환 정수 (0-명령이 성공하면 0)이고 두 번째는 터미널에 표시되는 전체 출력입니다.
ls의 경우
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
답변
import os
os.system("echo 'hello world'")
작동합니다. 출력을 파이썬 셸에 인쇄하는 방법을 모르겠습니다.
답변
일은 os.popen ()는 꽤 간단하게 사용하는 것입니다,하지만 파이썬 2.6 이후 사용되지 않습니다. 대신 subprocess 모듈을 사용해야합니다 .
여기에서 읽으십시오 : os.popen (command)를 문자열로 읽어 오기
답변
Jupyter
jupyter 노트북에서 매직 기능을 사용할 수 있습니다. !
!echo "execute a command"
files = !ls -a /data/dir/ #get the output into a variable
ipython
이것을 .py
스크립트 로 실행하려면 다음 을 사용해야합니다.ipython
files = get_ipython().getoutput('ls -a /data/dir/')
스크립트 실행
$ ipython my_script.py