>  기사  >  백엔드 개발  >  파이썬에서 다른 프로그램을 호출하는 방법

파이썬에서 다른 프로그램을 호출하는 방법

尚
원래의
2019-07-03 14:02:4610253검색

파이썬에서 다른 프로그램을 호출하는 방법

파이썬에서는 os 모듈을 이용하면 쉽게 다른 스크립트나 프로그램을 실행할 수 있기 때문에 다른 스크립트나 프로그램에서 제공하는 기능을 스크립트에서 직접 사용할 수 있습니다. , 해당 기능을 다시 구현하기 위해 코드를 작성할 필요가 없습니다. 실행 중인 프로세스를 더 잘 제어하려면 win32process 모듈의 함수를 사용할 수 있습니다. 프로세스를 추가로 제어하려면 ctype 모듈을 사용하여 kernel32.dll의 함수를 직접 호출할 수 있습니다. 다음은 4가지 방법입니다:

1. os.system() 함수

os 모듈의 system() 함수는 다른 프로그램이나 스크립트를 쉽게 실행할 수 있습니다.

os.system(command): command: 실행할 명령입니다. 매개변수를 스크립트에 전달하려면 공백을 사용하여 프로그램과 여러 매개변수를 구분할 수 있습니다.

예: #🎜 🎜#

#打开记事本
os.system('notepad')

#用记事本打开aa.txt
os.system('notepad aa.txt') #aa.txt文件必须在当前程序目录

#直接打开aa.txt
os.system('aa.txt')

#直接打开Excel文件
os.system('aa.xlsx')

#直接打开Word文件
os.system('bb.docx')

filepath='测试.xlsx'
#打开包含中文的文件
os.system(filepath.decode('utf8').encode('GBK'))

2, ShellExecute 함수

다른 프로그램을 실행하려면 win32api 모듈의 ShellExecute() 함수를 사용하세요. 형식은 다음과 같습니다#🎜🎜 #

ShellExecute(hwnd, op, file , args, dir, show)


hwnd: 상위 창의 핸들, 상위 창이 없으면 0입니다.

op: 실행할 작업(열림, 인쇄 또는 비어 있음)

file: 실행할 프로그램 또는 열 스크립트

args: 프로그램에 전달할 매개변수, 파일을 열면 비어 있음

dir: 프로그램이 초기화되는 디렉터리

show: 창을 표시할지 여부 # 🎜🎜#

ShellExecute 기능을 사용하는 것은 리소스 관리자에서 파일 아이콘을 두 번 클릭하는 것과 동일하며 시스템이 해당 프로그램을 열고 실행합니다.

import win32api

win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0)           # 后台执行
win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 1)           # 前台打开
win32api.ShellExecute(0, 'open', 'notepad.exe', 'wmi.txt', '', 1)      # 打开文件
win32api.ShellExecute(0, 'open', 'iexplore.exe', '', '', 1)             # 打开IE浏览器
win32api.ShellExecute(0, 'open', 'iexplore.exe', 'https://www.baidu.com/', '', 1)   # 用IE浏览器打开百度网址
win32api.ShellExecute(0, 'open', 'mspaint.exe', 'wxqr.png', '', 1) #用系统附件自带的画图打开图片wxqr.png

3, CreateProcess

Create process:

스크립트를 통해 실행되는 프로그램을 쉽게 제어하려면 CreateProcess()를 사용하면 됩니다. win32process 모듈의 함수 해당 프로그램을 실행하는 프로세스를 만듭니다. 해당 기능 형식은 다음과 같습니다. CreateProcess(appName, cmdLine, proAttr, threadAttr, InheritHandle, CreationFlags, newEnv, currentDir, Attr)

appName: 실행 파일 이름

cmdLine: 명령줄 매개변수#🎜🎜 #

procAttr: 프로세스 안전 속성

threadAttr: 스레드 안전 속성

InheritHandle: 상속 플래그

CreationFlags: 생성 플래그 #🎜🎜 #

currentDir: 프로세스의 현재 디렉터리

Attr: 생성된 프로그램의 속성

프로세스 종료:

#🎜 🎜#사용 가능 win32process.TerminateProcess 함수는 생성된 프로세스를 종료하는 데 사용됩니다. 함수 형식은 다음과 같습니다.

TerminateProcess(handle,exitCode)


handle: 동작할 프로세스 핸들

#🎜 🎜#exitCode: 프로세스 종료 코드

또는 win32event.WaitForSingleObject를 사용하여 생성된 스레드가 종료될 때까지 대기합니다. #🎜🎜 #

WaitForSingleObject(handle, milisecond)

#🎜 🎜#handle: 연산할 프로세스의 핸들

milisecond: 대기 시간, -1이면 계속 대기합니다.

import win32process

# 打开记事本,获得其句柄
handle = win32process.CreateProcess(r'C:\Windows\notepad.exe', '', None, None, 0, win32process.CREATE_NO_WINDOW, None, None, win32process.STARTUPINFO())
time.sleep(4)

# 终止进程
win32process.TerminateProcess(handle[0], 0)
import win32event

#等待进程结束  
print  win32event.WaitForSingleObject(handle[0], -1)

 4. ctypes를 사용하여 kernel32.dll 호출

함수는 ctypes 모듈을 사용하여 Python이 동적 링크 라이브러리에 있는 함수를 호출할 수 있도록 합니다.

ctypes 모듈은 Python에 동적 링크 라이브러리의 함수를 호출하는 기능을 제공합니다. ctypes 모듈을 사용하면 C 언어로 작성된 동적 링크 라이브러리를 쉽게 호출하고 매개변수를 전달할 수 있습니다.

ctypes 모듈은 C 언어의 기본 데이터 유형을 정의하고 C 언어의 구조 및 공용체를 구현할 수 있습니다. ctypes 모듈은 Windows, Linux 및 Mac OS와 같은 여러 운영 체제에서 작동할 수 있으며 기본적으로 크로스 플랫폼입니다.

예:

Windows의 user32.dll에서 MessageBoxA 함수를 호출합니다.

from ctypes import *
user32 = windll.LoadLibrary('user32.dll')
a = user32.MessageBoxA(0, str.encode('Hello Ctypes!'), str.encode('Ctypes'), 0)
print a

더 많은 Python 관련 기술 기사를 보려면

PythonTutorial

컬럼을 방문하여 알아보세요!

위 내용은 파이썬에서 다른 프로그램을 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.