Tôi đang cố gắng tìm ra cách tạo chương trình python mở tệp khi người dùng nhấp chuột phải vào tệp và chọn "Mở bằng". Ví dụ: tôi muốn người dùng có thể nhấp chuột phải vào tệp văn bản và chọn chương trình của tôi để chương trình của tôi có thể xử lý tệp văn bản. Tên của tệp văn bản có được chuyển vào chương trình của tôi một cách nào đó không? Cảm ơn."Mở bằng ..." một tệp trên Windows, với ứng dụng trăn
Trả lời
Vấn đề với cách tiếp cận này là tệp .py của bạn không phải là tệp thực thi; Windows sẽ chuyển tệp văn bản dưới dạng tham số sang tệp .py, nhưng tệp .py sẽ không làm bất kỳ điều gì vì nó không phải là tệp thi hành.
Những gì bạn có thể làm là biên dịch tập lệnh của mình với py2exe để có được tệp thực thi thực tế mà bạn thực sự có thể chỉ định trong màn hình "Mở bằng ..." (thậm chí bạn có thể đăng ký nó làm mặc định cho bất kỳ tệp * .foo nào). Đường dẫn đến tệp .foo đang được chuyển phải là sys.argv[1]
trong tập lệnh của bạn.
Trước tiên, bạn cần phải đăng ký tập lệnh của mình để chạy bằng Python trong ProgId trong sổ đăng ký. Tối thiểu, bạn sẽ cần phải động từ mở định nghĩa:.
HKEY_CURRENT_USER\Software\Classes\MyApp.ext\
(Default) = "Friendly Name"
DefaultIcon\
(Default) = "path to .ico file"
shell\
open\
command\
(Default) = 'path\python.exe "path\to\your\script.py" "%L"'
Bạn có thể thay thế HKEY_LOCAL_MACHINE
nếu bạn đang cài đặt máy rộng * Ngoài ra còn có versioning ước rằng có thể bạn có thể bỏ qua. Phần MSDN trên File Types có thông tin chi tiết hơn.
Bước thứ hai là thêm ProgID của bạn vào OpenWithProdIds chủ chốt của phần mở rộng bạn muốn xuất hiện trong danh sách cho:
HKEY_CURRENT_USER\Software\Classes\.ext\OpenWithProgIds
MyApp.ext = None
Giá trị của khóa không quan trọng, miễn là tên khớp chính xác với ProgId của bạn.
* Lưu ý rằng HKEY_CLASSES_ROOT
thực sự là chìa khóa giả mạo 'chứa' một sự kết hợp của cả hai HKLM\Software\Classes
và HKCU\Software\Classes
; nếu bạn đang viết vào sổ đăng ký, bạn nên chọn một trong các khóa thực tế. Bạn không cần nâng cấp để cài đặt vào HKEY_CURRENT_USER
.
Tôi sẽ tuyên bố rằng tôi đã không thử điều này, vì tôi không đặc biệt muốn gây rối với cài đặt của tôi trên máy này. MSDN gợi ý rằng một vài giá trị khác cần phải được thiết lập nhưng một cái nhìn nhanh qua registry của tôi nói rằng chúng không cần thiết. Chắc chắn quan tâm nếu giải pháp tối thiểu này hoạt động; hãy tiếp tục và chỉnh sửa thêm bất kỳ bit nào tôi đã bỏ lỡ. – Zooba
Điều này đơn giản là không hoạt động; chọn .py trong menu 'open with' vẫn báo cáo nó không phải là một ứng dụng win32. –
Cách tiếp cận của tôi là sử dụng tệp chuyển hướng .bat có chứa python someprogram.py %1
. Các %1
vượt qua đường dẫn tập tin vào kịch bản python mà có thể được truy cập với
from sys import argv argv[1]
- 1. Mở một tệp bằng ứng dụng bên ngoài trên Java
- 2. Mở tệp bằng fopen, đường dẫn tuyệt đối trên Windows
- 3. Mở tệp bằng ứng dụng Windows mặc định từ bên trong các emacs
- 4. Mở một tệp trên Unix bằng cách sử dụng C++
- 5. bó trăn "back-end" mã trong một ứng dụng PhoneGap
- 6. Cách mở tệp bằng ứng dụng mặc định trong SWT?
- 7. Nơi lưu trữ tệp nhật ký ứng dụng trên Windows
- 8. Chạy một ứng dụng WPF trên Windows XP
- 9. Lập trình đổi tên tệp mở trên Windows
- 10. không gian tên trên trăn trăn
- 11. Tạo một Tệp/Thư mục Ẩn trên Windows bằng Java
- 12. Gọi trăn dưới Cygwin trên Windows bị treo
- 13. Mở tệp PDF ngay lập tức từ ứng dụng Java
- 14. Mở ứng dụng Windows Phone 7 từ URL
- 15. python: ví dụ đơn giản cho một quả trứng trăn với một tệp nguồn một tệp?
- 16. Emacs elisp hành vi mở rộng tên tệp trên windows
- 17. Mở tệp với ứng dụng được liên kết
- 18. Mở tệp trong ứng dụng Django
- 19. Windows xây dựng cho PyLucene + JCC trên trăn 2.6
- 20. mở ứng dụng facebook trên một bài đăng cụ thể
- 21. Tôi có thể mở ứng dụng Windows 8 bằng URL không?
- 22. (Iphone) liên kết ứng dụng với một số phần mở rộng tệp để mở tệp đính kèm email trong ứng dụng Thư
- 23. Mở Hộp thoại Tệp Windows API
- 24. Tệp đồng thời viết bằng Java trên Windows
- 25. GitHub cho ứng dụng .NET trên Windows?
- 26. System.Runtime.Remoting.RemotingException trên ứng dụng Windows store
- 27. Tệp âm thanh thô thành AAC bằng cách sử dụng Windows Media Foundation trên Windows 7
- 28. sử dụng trăn 2.3 trên ubuntu 10.04
- 29. Mở tệp trong ứng dụng khác
- 30. golang: chạy ứng dụng mặc định cho tệp pdf trên windows
py2exe là một overkill vì nó tạo ra một chương trình để một exe độc lập mà không cần python ở tất cả và nó cần phải được biên dịch lại mỗi khi chương trình được thay đổi (trong trường hợp bạn phát triển nó). Có exe hàm bao trong% python% \ Scripts \ mà chỉ cần khởi chạy một kịch bản python với cùng một tên. Ai đó biết gì về nó? –