如何使用 Python 访问命令提示符历史记录
How can I access command prompt history with Python
在Windows10,Python3.6
假设我打开了一个命令提示符会话 (不是 Python 命令提示符或 Python 交互式会话) 并且我一直在设置一个具有大量配置或类似性质的环境。有什么方法可以让我访问我在该会话中使用的命令的历史记录,例如 python 模块?
理想情况下,我希望能够将此历史记录导出到一个文件中,以便将来重复使用。
示例:
在命令提示符中键入:python savecmd.py
并保存该会话的历史记录。
您根本不需要 Python,为此使用 doskey
设施,即:
doskey /history
将打印出当前会话的命令历史记录,如果要保存它,您可以将其重定向到一个文件:
doskey /history > saved_commands.txt
如果您真的想在 Python 中执行此操作,您可以使用 subprocess.check_output()
捕获命令历史记录,然后将其保存到文件中:
import subprocess
cmd_history = subprocess.check_output(["doskey", "/history"])
with open("saved_commands.txt", "wb") as f:
f.write(cmd_history)
你实际上要求 3 种不同的东西。
- 获取Python REPL 命令历史记录
- 从“提示”获取信息,我假设是 Powershell 或 CMD.exe。
- 将历史列表保存到文件。
要从 REPL 中获取历史记录,请使用:
for i in list(range(readline.get_current_history_length())): print(readline.get_history_item(i))
不幸的是,REPL中没有history,从外部使用时,如上,所以你需要找到history文件并打印它。
从 powershell 查看历史文件:
function see_my_py_history{ cat C:\<path-to>\saved_commands.txt }
Set-Alias -Name seehist -Value see_my_py_history
在Windows10,Python3.6
假设我打开了一个命令提示符会话 (不是 Python 命令提示符或 Python 交互式会话) 并且我一直在设置一个具有大量配置或类似性质的环境。有什么方法可以让我访问我在该会话中使用的命令的历史记录,例如 python 模块?
理想情况下,我希望能够将此历史记录导出到一个文件中,以便将来重复使用。
示例:
在命令提示符中键入:python savecmd.py
并保存该会话的历史记录。
您根本不需要 Python,为此使用 doskey
设施,即:
doskey /history
将打印出当前会话的命令历史记录,如果要保存它,您可以将其重定向到一个文件:
doskey /history > saved_commands.txt
如果您真的想在 Python 中执行此操作,您可以使用 subprocess.check_output()
捕获命令历史记录,然后将其保存到文件中:
import subprocess
cmd_history = subprocess.check_output(["doskey", "/history"])
with open("saved_commands.txt", "wb") as f:
f.write(cmd_history)
你实际上要求 3 种不同的东西。
- 获取Python REPL 命令历史记录
- 从“提示”获取信息,我假设是 Powershell 或 CMD.exe。
- 将历史列表保存到文件。
要从 REPL 中获取历史记录,请使用:
for i in list(range(readline.get_current_history_length())): print(readline.get_history_item(i))
不幸的是,REPL中没有history,从外部使用时,如上,所以你需要找到history文件并打印它。
从 powershell 查看历史文件:
function see_my_py_history{ cat C:\<path-to>\saved_commands.txt }
Set-Alias -Name seehist -Value see_my_py_history