Four ways to run other programs in Python

Source: Internet
Author: User

In python, it is easy to use the OS module to run other scripts or programs so that the functionality provided by other scripts or programs can be used directly in the script without having to write code that implements that functionality again. To better control the running process, you can use the functions in the Win32process module, and if you want to further control the process, you can call the functions in Kernel32.dll directly using the CType module.


" Way One " uses the Os.system () function to run other programs

the system () function in the OS module makes it easy to run other programs or scripts with the following pattern:

Os.system (command)

    • Command: To execute the commands, if you want to pass parameters to the script, you can use a space to split the program and multiple parameters.

Examples are as follows:
>>> Import os>>> os.system (' Notepad ')       # Open Notepad program .0>>> os.system (' Notepad 1.txt ') # Open the 1.txt file and create it if it does not exist. 0
" mode two " uses the ShellExecute function to run other programs
In addition to using the Os.system () function, you can use the ShellExecute () function in the Win32API module to run other programs in the following format:
ShellExecute (hwnd, OP, file, args, dir, show)
    • HWND: The handle of the parent window, or 0 if there is no parent window
    • OP: The operation to be run, either open,print or empty
    • File: The program to run, or the script that opens
    • Args: The parameter to pass to the program, or null if the file is open
    • Dir: Directory of program initialization
    • Show: Whether the window is displayed
examples are as follows:
>>> import Win32API                                                             >>> Win32API. ShellExecute (0, ' open ', ' notepad.exe ', ', ', ' 0 ')           # Background execution >>> Win32API. ShellExecute (0, ' open ', ' notepad.exe ', ', ', ' 1 ')           # Reception Open >>> Win32API. ShellExecute (0, ' open ', ' notepad.exe ', ' 1.txt ', ', 1)      # Open File >>> Win32API. ShellExecute (0, ' open ', ' http://www.sohu.com ', ', ', ' 1 ')   # open page >>> Win32API. ShellExecute (0, ' open ', ' D:\\opera.mp3 ', ', ', 1)         # Play Video >>> Win32API. ShellExecute (0, ' open ', ' d:\\hello.py ', ', ', 1)          # Run the program
using the ShellExecute function, it is equivalent to double-clicking the file icon in Explorer and the system will open the corresponding program to run.

Note:

Win32API Installation http://sourceforge.net/projects/pywin32/files/pywin32/ because my is 64 of the operating system, so downloaded this: pywin32-216.win-amd64-py2.7



" Way three " run other programs using the ShellExecute function

To create a process:
To facilitate control of programs running through scripts, you can use the CreateProcess () function in the Win32process module to create

A process that runs the corresponding program. The format of the function is:

CreateProcess (AppName, CmdLine, Proattr, Threadattr, Inherithandle, Creationflags, Newenv, Currentdir, Attr)

    • AppName executable file name
    • CmdLine command-line arguments
    • Procattr Process Security Properties
    • Threadattr Thread Safety Properties
    • Inherithandle Inheritance Flag
    • Creationflags Creating a flag
    • Current directory of the Currentdir process
    • Attr Creating a program's properties

Examples are as follows:
>>> win32process. CreateProcess (' C:\\windows\\notepad.exe ', ', none, none, 0, win32process. Create_no_window, none, none, win32process. Startupinfo ()) (<PYHANDLE:892>, <pyhandle:644>, 21592, 18780) # function returns the process handle, thread handle, process ID, and thread ID


End Process:

You can use win32process. TerminateProcess function to end a process that has already been created, the function is formatted as follows:

terminateprocess (handle, ExitCode)
    • Handle the handle of the process to be manipulated
    • ExitCode Process Exit code

or use Win32event. WaitForSingleObject waits for the created thread to end, the function is formatted as follows:

WaitForSingleObject (handle, Milisecond)
    • Handle: Handle of the process to be manipulated
    • Milisecond: Wait time, if 1, then wait.

examples are as follows:
>>> import win32process>>> handle = win32process. CreateProcess (' C:\\windows\\notepad.exe ', ', none, none, 0, win32process. Create_no_window, none, none, win32process. Startupinfo ()) # Open Notepad to get its handle >>> win32process. TerminateProcess (Handle[0], 0) # Terminate process or >>> import win32event>>> handle = Win32proc Ess. CreateProcess (' C:\\windows\\notepad.exe ', ', none, none, 0, win32process. Create_no_window, none, none, win32process. Startupinfo ()) # Create process get handle >>> win32event.                                                                      WaitForSingleObject (Handle[0],-1) # Wait for process to end 0 # process End return value 
" mode four " uses cTYPES to invoke functions in Kernel32.dll
Using the cTYPES module allows Python to invoke functions located in the dynamic-link library.

The cTYPES module provides Python with the ability to invoke functions in a dynamic-link library. The cTYPES module makes it easy to invoke and pass parameters to a dynamic-link library written in C. The cTYPES module defines the basic data types in the C language, and can implement structs and unions in C. The cTYPES module can operate on a wide range of operating systems such as the Windows,linux,mac OS, which basically implements cross-platform.

Example:

Windows downgrades the MessageBoxA function in user32.dll.

>>> from ctypes import *>>> user32 = Windll. LoadLibrary (' user32.dll ') >>> user32. MessageBoxA (0, Str.encode (' ctypes is so smart! '), Str.encode (' ctypes '), 0) 1

The basic types contained in the CType module are similar to the C language, and the following are the comparison of several basic data types:

---------------------------------------

ctypes data Type C data type
---------------------------------------
C_char Char
C_short Short
C_int int
C_long Long
C_float float
C_doule Double

c_void_p void *

---------------------------------------

Four ways to run other programs in Python

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.