2008-09-27 37 views
43

Tôi muốn kéo và thả tệp dữ liệu của mình lên tập lệnh Python và xử lý tệp và tạo đầu ra. Kịch bản Python chấp nhận tên của tệp dữ liệu dưới dạng tham số dòng lệnh, nhưng Windows Explorer không cho phép tập lệnh là mục tiêu thả.Kéo và thả lên tập lệnh Python trong Windows Explorer

Có loại cấu hình nào cần được thực hiện ở đâu đó cho công việc này không?

+0

tôi nghĩ rằng nó chỉ hoạt động nếu bạn cài đặt python từ trình cài đặt Windows (về cơ bản nếu bạn có thể bấm đúp để chạy tập lệnh python) –

Trả lời

49

Chắc chắn. Từ số mindless technology article called "Make Python Scripts Droppable in Windows", bạn có thể thêm trình xử lý thả bằng cách thêm khóa đăng ký:

Đây là tệp nhập đăng ký mà bạn có thể sử dụng để thực hiện việc này. Sao chép các sau vào một tập tin .reg và chạy nó (Hãy chắc chắn rằng phần mở rộng .py của bạn được ánh xạ tới Python.File).

Windows Registry Editor Version 5.00 

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

Điều này làm cho Python script sử dụng các handler WSH thả, đó là tương thích với tên file dài. Để sử dụng trình xử lý tên tệp ngắn, hãy thay thế GUID bằng 86C86720-42A0-1069-A2E8-08002B30309D.

Một bình luận trong bài viết chỉ ra rằng người ta có thể cho phép thả trên "không có file console Python (.pyw)" hoặc "file Python biên dịch (.pyc)" bằng cách sử dụng các Python.NoConFilePython.CompiledFile lớp.

+0

Bạn sẽ thả tệp ở đâu? Vào cửa sổ giao diện điều khiển? Hoặc vào biểu tượng tệp tập lệnh? Tôi không đi theo. – Greg

+3

Trên biểu tượng tệp tập lệnh. –

+1

Bạn cũng có thể làm cho nó in lỗi nếu nó bị treo? – Norfeldt

5

Thử sử dụng py2exe. Sử dụng py2exe để chuyển đổi kịch bản python của bạn thành một cửa sổ thực thi. Sau đó, bạn có thể kéo và thả các tệp nhập vào tập lệnh của mình trong Windows Explorer. Bạn cũng có thể tạo lối tắt trên màn hình của mình và thả các tệp nhập vào đó. Và nếu kịch bản python của bạn có thể lấy một danh sách tập tin bạn sẽ có thể kéo và thả nhiều tập tin trên kịch bản của bạn (hoặc phím tắt).

+1

Cách tiếp cận này cũng làm việc với PyInstaller. – franzlorenzon

24

viết một kịch bản đơn giản (file.bat)

"c:\Python27\python.exe" yourprogram.py %1 

nơi% 1 là viết tắt cho đối số linh sam để bạn vượt qua kịch bản.

Bây giờ hãy kéo% thả tệp đích của bạn lên biểu tượng tệp.bat.

+7

"c: \ Python27 \ python.exe" yourprogram.py% * Để chụp nhiều tệp được kéo – sjtaheri

1

Tạo lối tắt của tệp. Trong trường hợp bạn không có python mở tệp .py theo mặc định, hãy đi vào thuộc tính của phím tắt và chỉnh sửa mục tiêu của phím tắt để bao gồm phiên bản python bạn đang sử dụng. Ví dụ:

Target: đường dẫn \ Python26 \ python.exe < shortcut target>

Tôi gửi bài này vì tôi không muốn chỉnh sửa Registry và workaround .bat đã không làm việc: C cho tôi.

2

Với trăn đã cài đặt - ít nhất là 2.6.1 - bạn chỉ có thể kéo và thả bất kỳ tệp nào trên tập lệnh python.

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

sys.argv[0] là tập lệnh. sys.argv[n+1] là các tệp bạn đã bỏ.

+0

Câu trả lời này đơn giản và dễ nhất. Ngoài ra, thử nghiệm để làm việc với py2exe (sử dụng Python 3.3) sau khi nó đã được chuyển đổi thành một exe. – Splic

Các vấn đề liên quan