要在Python中记录外部命令的执行日志,您可以使用subprocess
模块来运行外部命令,并使用logging
模块来记录输出和错误信息。以下是一个示例代码:
import subprocess
import logging
# 配置日志记录
logging.basicConfig(filename='command_execution.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# 要执行的外部命令
command = 'echo "Hello, World!"'
# 使用subprocess.run()运行外部命令,并捕获输出和错误信息
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, shell=True)
# 记录命令执行结果
if result.returncode == 0:
logging.info(f'Command executed successfully: {command}\nOutput: {result.stdout}')
else:
logging.error(f'Command execution failed: {command}\nError: {result.stderr}')
在这个示例中,我们首先配置了日志记录,将日志信息写入名为command_execution.log
的文件中。然后,我们使用subprocess.run()
函数运行外部命令,并通过设置stdout
和stderr
参数来捕获命令的输出和错误信息。最后,我们根据命令的执行结果记录相应的日志信息。
请注意,使用shell=True
可能会导致安全风险,特别是在处理不受信任的输入时。在这种情况下,建议避免使用shell=True
,并通过传递命令及其参数作为列表来运行外部命令。例如:
command = ['echo', 'Hello, World!']
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)