터미널에서 Python Script 명령 실행
얼마 전에 어디선가 읽었는데 못 찾겠어요.단말기에서 명령을 실행한 후 결과를 출력하는 명령을 찾고 있습니다.
예: 스크립트는 다음과 같습니다.
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])
import os
os.system("echo 'hello world'")
이게 통할 겁니다.python Shell로 출력을 출력하는 방법을 모르겠습니다.
사실 하위 프로세스에 대한 질문은 좋은 읽을거리가 될 것입니다.
python3의 경우 하위 프로세스 사용
import subprocess
s = subprocess.getstatusoutput(f'ps -ef | grep python3')
print(s)
오류를 확인할 수도 있습니다.
import subprocess
s = subprocess.getstatusoutput('ls')
if s[0] == 0:
print(s[1])
else:
print('Custom Error {}'.format(s[1]))
# >>> Applications
# >>> Desktop
# >>> Documents
# >>> Downloads
# >>> Library
# >>> Movies
# >>> Music
# >>> Pictures
import subprocess
s = subprocess.getstatusoutput('lr')
if s[0] == 0:
print(s[1])
else:
print('Custom Error: {}'.format(s[1]))
# >>> Custom Error: /bin/sh: lr: command not found
당신은 또한 조사해야 합니다.commands.getstatusoutput
길이가 2인 튜플을 반환합니다.첫 번째는 반환 정수(0 - 명령이 성공한 경우)이고 두 번째는 터미널에 표시되는 전체 출력입니다.
포어즈
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']
python3에서 표준 방법은 다음과 같습니다.
res = subprocess.run(['ls', '-l'], capture_output=True)
print(res.stdout)
os.popen()은 사용하기에 매우 간단하지만 Python 2.6 이후로는 사용되지 않습니다.대신 하위 프로세스 모듈을 사용해야 합니다.
여기 읽기: aos.popen(명령)을 문자열로 읽기
주피터
주피터 노트북에서는 마법 기능을 사용할 수 있습니다.!
!echo "execute a command"
files = !ls -a /data/dir/ #get the output into a variable
이피톤
이를 로 실행하려면.py
사용해야 하는 스크립트ipython
files = get_ipython().getoutput('ls -a /data/dir/')
대본을 실행합니다.
$ ipython my_script.py
'os' 모듈을 가져와서 다음과 같이 사용할 수 있습니다.
import os
os.system('#DesiredAction')
- 실행 중: 하위 프로세스.달려.
- 출력: 하위 프로세스.파이프
- 오류: 런타임 오류 발생
#! /usr/bin/env python3
import subprocess
def runCommand (command):
output=subprocess.run(
command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
if output.returncode != 0:
raise RuntimeError(
output.stderr.decode("utf-8"))
return output
output = runCommand ([command, arguments])
print (output.stdout.decode("utf-8"))
언급URL : https://stackoverflow.com/questions/3730964/python-script-execute-commands-in-terminal
'programing' 카테고리의 다른 글
PHP 프로그램에서 HTML을 안전하게 출력하는 방법은 무엇입니까? (0) | 2023.07.24 |
---|---|
각각 하위 명령 집합이 있는 클릭 명령을 여러 파일로 분할하려면 어떻게 해야 합니까? (0) | 2023.07.24 |
부동 소수점 숫자를 가장 가까운 정수로 반올림하시겠습니까? (0) | 2023.07.19 |
SQL Server 2008 백업 오류 - 운영 체제 오류 5(이 오류에 대한 텍스트를 검색하지 못했습니다.이유: 15105) (0) | 2023.07.19 |
Excel VBA - 순차적이지 않은 열을 여러 개 선택합니다. (0) | 2023.07.19 |