自己只是業(yè)余做一點輔助工作的批處理,遇到一些難得但有用的小方案就收集起來.免得回頭連該搜什么都忘了,麻煩.
一.Python在cmd意外暫停運行的解決方案
- 我的情況是由于點擊或輸入觸發(fā)了win10中cmd的快速編輯模式或插入模式,導(dǎo)致程序強制暫停.解決方案源
- 第一種解決方案,簡單粗暴很有效.
##適用于僅嘗試為當前控制臺禁用“快速編輯”和“插入”模式且無法找到簡單解決方案的任何人
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), 128)
- 第二種解決方案,測試可用,參數(shù)更靈活一些.
這里邊的英文我就不翻譯了,我看不太懂.
##這對嘗試在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,結(jié)果刪除的時候沒刪清.然后再安裝的3.8.5又安裝到了別的路徑上.刪除python的時候,用安裝包里面的卸載刪除比較干凈,用windows的卸載可能會有一些隱含的遺留問題.
- 可以pip install xxxxxx 這樣自己安裝需要的庫
- 后來,我是用3.8.5的安裝包將3.8.5完整刪除掉,然后重新安裝了3.8.4并且用其安裝包將3.8.4完整刪除,最后再次安裝的3.8.5
- 回憶了一下,好像和我手賤清了一次環(huán)境變量也有關(guān)系.