[python] Python 스크립트는 터미널에서 명령을 실행합니다.

나는 얼마 전에 이것을 어딘가에서 읽었지만 그것을 찾을 수없는 것 같습니다. 터미널에서 명령을 실행 한 다음 결과를 출력하는 명령을 찾으려고합니다.

예 : 스크립트는 다음과 같습니다.

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