Python执行程序
直接使用Python运行程序
使用Python解释器执行Python程序最直接的方法就是使用Python解释器。.py文件。假设你已经有一个叫script的Python脚本.py,为了运行它,首先确保Python已经安装在您的系统中。接着,打开命令行工具,可以是命令提示符、PowerShell或终端,导航到包含脚本的目录中,输入以下命令:
python script.py
上述命令将使Python解释器读取并执行脚本文件中的代码。如代码正确,文件中的每个句子都将按顺序执行。
其他程序通过Python代码执行。
如需在Python脚本中执行其它Python脚本或其它可执行程序,可在标准库中使用subprocess模块。subprocess模块允许您启动新的过程,连接到它们的输入/输出/错误管道,并获得它们的返回值。
以下是一个使用subprocess模块运行外部Python脚本的例子:
import subprocess # 执行外部Python脚本 subprocess.run(['python', 'other_script.py'])
subprocess.run 这是一种简单的方法,可以直接调用,但是如果你需要更细的粒度控制,例如管理子进程的输入输出,可以使用 subprocess.Popen。
请参考下列示例:
import subprocess # 利用Popen启动子进程,获取子进程的输出。 process = subprocess.Popen(['python', 'other_script.py'], stdout=subprocess.PIPE) output, error = process.communicate() # 输出打印子进程 print(output.decode())
运行系统命令在Python代码中运行系统
有时你可能想直接在Python脚本上运行命令行命令。可采用os模块或subprocess模块来实现。
举例来说,使用os.system:
import os # 执行命令行中的命令(例如列出当前目录下的文件) os.system('ls') # Unix/Linux os.system('dir') # Windows
不过,os.system 执行命令时,不会捕获其输出,只能获得命令的返回状态。如需捕获输出,可使用 subprocess.check_output:
import subprocess # 执行系统命令并获得输出 try: output = subprocess.check_output(['ls'], stderr=subprocess.STDOUT, shell=True) print(output.decode()) except subprocess.CalledProcessError as e: print("An error occurred: ", e.output.decode())
使用时请注意 subprocess.check_output 在这个时候,捕捉stderr输出是一个很好的习惯,它可以帮助调试错误。
与操作系统交互执行程序
Python允许与操作系统互动,环境变量、文件处理系统等也可以通过os模块的功能获得。
举例来说,利用os模块设置环境变量:
import os # 设置环境变量 os.environ['MY_VARIABLE'] = 'value' # 获得并打印环境变量 print(os.getenv('MY_VARIABLE'))
操作文件系统:
import os # 创建新目录 os.mkdir('new_directory') # 改变当前工作目录 os.chdir('new_directory') # 列出当前目录下的文件 print(os.listdir('.'))
这一功能使Python成为系统编程和脚本化的有力工具。
多进程和多线程在Python中的执行
当执行一项需要长时间或资源密集的任务时,可能需要使用多线程或多进程来提高效率。
使用threading模块创建线程:
import threading def print_numbers(): for i in range(10): print(i) # 创建线程 thread = threading.Thread(target=print_numbers) # 启动线程 thread.start() # 等待线程完成 thread.join()
对多个进程,可使用multiprocessing模块:
import multiprocessing def print_numbers(): for i in range(10): print(i) # 创建进程 process = multiprocessing.Process(target=print_numbers) # 启动进程 process.start() # 等待过程完成 process.join()
由于Python的线程受全局解释器锁定,因此多线程适用于IO密集型任务,而多进程适用于CPU密集型任务。(GIL)影响力,不能同时执行多个CPU核心。