programing

터미널에서 Python Script 명령 실행

telecom 2023. 7. 19. 21:11
반응형

터미널에서 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

반응형