簡體   English   中英

拖放到 Windows 資源管理器中的 Python 腳本上

[英]Drag and drop onto Python script in Windows Explorer

我想將我的數據文件拖放到 Python 腳本上,讓它處理文件並生成輸出。 Python 腳本接受數據文件的名稱作為命令行參數,但 Windows 資源管理器不允許該腳本作為放置目標。

這項工作是否需要在某處進行某種配置?

當然。 名為“Make Python Scripts Droppable in Windows”無意識技術文章中,您可以通過添加注冊表項來添加放置處理程序:

這是您可以用來執行此操作的注冊表導入文件。 將以下內容復制到 .reg 文件中並運行它(確保您的 .py 擴展名映射到 Python.File)。

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\\Python.File\\shellex\\DropHandler] @="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

這使得 Python 腳本使用與長文件名兼容的 WSH 丟棄處理程序。 要使用短文件名處理程序,請將 GUID 替換為86C86720-42A0-1069-A2E8-08002B30309D

該帖子中的一條評論表明,可以通過使用Python.NoConFilePython.CompiledFile類啟用“無控制台 Python 文件 ( .pyw )”或“已編譯的 Python 文件 ( .pyc )”。

編寫一個簡單的 shell 腳本( file.bat

"C:\python27\python.exe" yourprogram.py %*

其中%*代表您傳遞給腳本的所有參數。

現在將目標文件拖放到file.bat圖標上。

使用已安裝的 python - 至少 2.6.1 - 您可以將任何文件拖放到 python 腳本上。

import sys
droppedFile = sys.argv[1]
print droppedFile

sys.argv[0]是腳本本身。 sys.argv[n+1]是您刪除的文件。

嘗試使用 py2exe。 使用 py2exe 將您的 python 腳本轉換為 Windows 可執行文件。 然后,您應該能夠將輸入文件拖放到 Windows 資源管理器中的腳本中。 您還應該能夠在桌面上創建快捷方式並將輸入文件拖放到桌面上。 如果您的 python 腳本可以獲取文件列表,您應該能夠在腳本(或快捷方式)上拖放多個文件。

創建文件的快捷方式。 如果默認情況下您沒有 python open .py 文件,請進入快捷方式的屬性並編輯快捷方式的目標以包含您正在使用的 python 版本。 例如:

目標:C:\\Python26\\python.exe <快捷目標路徑>

我發布這個是因為我不想編輯注冊表,而且 .bat 解決方法對我不起作用。

1)。 創建 .py 的快捷方式
2)。 右鍵單擊-> 屬性
3)。 前綴“Target:”與“python”,因此它將.py作為參數運行到python命令中
或者
1)。 創建一個.bat
2)。 python some.py %*

這些快捷方式版本對我來說是最簡單的
否則我會將其轉換為 .exe,但寧願只使用 java 或 c/c++

遲到的答案,但此頁面上的所有答案都不適合我。
我設法使用以下方法啟用/修復拖放到.py腳本上:

  1. HKEY_CLASSES_ROOT\\.py -> 將默認值設置為Python.File

  2. HKEY_CLASSES_ROOT\\Python.File\\Shell\\Open -> 創建一個名為Command的鍵,默認值為"C:\\Windows\\py.exe" "%1" %*

  3. CLASSES_ROOT\\Applications\\py.exe\\open\\command -> 如果不存在則創建密鑰並將默認值設置為"C:\\Windows\\py.exe" "%1" %*

  4. CLASSES_ROOT\\Python.File\\ShellEx -> 使用默認值創建密鑰DropHandler {86C86720-42A0-1069-A2E8-08002B30309D}

就是這樣。 通過將文件拖到 python 腳本上來測試它:

import sys

args = sys.argv
print(args)

對於那些在.py腳本中使用argv但仍然無法拖動文件執行的人,可以通過簡單地使用Python Launcher(帶有火箭圖標)來解決這個問題

腳本屬性“打開文件”被設置為 python.exe,它不知道腳本需要命令行參數“%*”

參考: https : //bugs.python.org/issue40253

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM