自己只是业余做一点辅助工作的批处理,遇到一些难得但有用的小方案就收集起来.免得回头连该搜什么都忘了,麻烦.
一.Python在cmd意外暂停运行的解决方案
- 我的情况是由于点击或输入触发了win10中cmd的快速编辑模式或插入模式,导致程序强制暂停.解决方案源
- 第一种解决方案,简单粗暴很有效.
##适用于仅尝试为当前控制台禁用“快速编辑”和“插入”模式且无法找到简单解决方案的任何人
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), 128)
- 第二种解决方案,测试可用,参数更灵活一些.
这里边的英文我就不翻译了,我看不太懂.
##这对尝试在Windows中仅启用和禁用快速编辑模式而不禁用其他功能的用户可能会有所帮助。
def quickedit(enabled=1): # This is a patch to the system that sometimes hangs
import ctypes
'''
Enable or disable quick edit mode to prevent system hangs, sometimes when using remote desktop
Param (Enabled)
enabled = 1(default), enable quick edit mode in python console
enabled = 0, disable quick edit mode in python console
'''
# -10 is input handle => STD_INPUT_HANDLE (DWORD) -10 | https://docs.microsoft.com/en-us/windows/console/getstdhandle
# default = (0x4|0x80|0x20|0x2|0x10|0x1|0x40|0x200)
# 0x40 is quick edit, #0x20 is insert mode
# 0x8 is disabled by default
# https://docs.microsoft.com/en-us/windows/console/setconsolemode
kernel32 = ctypes.windll.kernel32
if enabled:
kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), (0x4|0x80|0x20|0x2|0x10|0x1|0x40|0x100))
print("Console Quick Edit Enabled")
else:
kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), (0x4|0x80|0x20|0x2|0x10|0x1|0x00|0x100))
print("Console Quick Edit Disabled")
quickedit(0) # Disable quick edit in terminal
##只需禁用0x40标志即可快速编辑
二.Python某些标准库import失败
- 我的情况是之前安装了python 3.8.4,结果删除的时候没删清.然后再安装的3.8.5又安装到了别的路径上.删除python的时候,用安装包里面的卸载删除比较干净,用windows的卸载可能会有一些隐含的遗留问题.
- 可以pip install xxxxxx 这样自己安装需要的库
- 后来,我是用3.8.5的安装包将3.8.5完整删除掉,然后重新安装了3.8.4并且用其安装包将3.8.4完整删除,最后再次安装的3.8.5
- 回忆了一下,好像和我手贱清了一次环境变量也有关系.