2015-03-13 21 views
8

Tôi muốn làm như sau:mở rộng liên kết tập tin vào kịch bản python, vì vậy mà tôi có thể mở tập tin bằng cách nhấn đúp chuột, trong cửa sổ

  1. Lưu dữ liệu số trong một định dạng CSV-như, với một". foo "mở rộng;
  2. Kết hợp phần mở rộng tệp ".foo" với một số tập lệnh python, lần lượt mở tệp .foo, đọc nội dung của nó và vẽ thứ gì đó bằng thư viện vẽ (có thể là matplotlib).

Trường hợp sử dụng sẽ là: nhấp đúp vào tệp và ô tương ứng của nó sẽ xuất hiện ngay lập tức.

Tôi tự hỏi làm thế nào tôi nên viết một kịch bản python để làm điều đó. Bên cạnh đó, cửa sổ "mở bằng" hộp thoại chỉ cho phép tôi chọn tập tin thực thi (* .exe). Nếu tôi chọn "fooOpener.py", nó không hoạt động.

Trả lời

7

Đây không thực sự là một câu hỏi lập trình, nhưng những gì bạn cần làm là tìm ra cách để Python thực thi vào khóa đăng ký mở tệp dữ liệu của bạn.

Ví dụ, tôi tạo ra một kịch bản Python chút gọi là opener.py trông như thế này:

import sys 
print(sys.argv) 
input() 

Sau đó, tôi đã tạo ra một testfile.foo và sử dụng nút "thay đổi" trong hộp thoại sở hữu của tập tin đó để lựa chọn opener.py. (Bạn có thể thực hiện việc này nếu bạn nhấp vào Duyệt qua và thay đổi bộ lọc tệp của hộp thoại Mở bằng "Tất cả các tệp".)

Tất nhiên điều này không hoạt động (như bạn thấy). Vì vậy, tôi mở regedit và tìm kiếm opener.py và tìm thấy nó ở khóa registry sau đây:

HKEY_CURRENT_USER\Software\Classes\Applications\opener.py\shell\open\command 

Giá trị mặc định của khóa này là "C:\opener.py" %1. Tôi đã đổi nó thành python "C:\opener.py" %1. Nó đã làm việc!

Câu chuyện dài ngắn, để làm điều này đúng, bạn cần chỉnh sửa tùy chỉnh sổ đăng ký. Việc thiết lập liên kết tệp thực sự phức tạp hơn là chỉ chỉnh sửa một khóa đó (bạn cũng phải chỉ ra rằng .foo được liên kết với opener.py).

Một cách tiếp cận khác là biến tập lệnh Python thành một tệp thực thi độc lập bằng cách sử dụng một trong các công cụ có sẵn cho mục đích đó hoặc viết một tệp thực thi nhỏ trong C khởi chạy tập lệnh.

+6

Bạn đang thiết lập các liên kết cho mỗi người dùng (HKCU), nhưng nếu bạn muốn thiết lập cho tất cả người dùng trong HKLM, thật dễ dàng để sử dụng lệnh "assoc' và' ftype' của dấu nhắc lệnh, ví dụ: 'assoc .foo = FooFile' và' ftype FooFile = "C: \ Python27 \ python.exe" "C: \ opener.py" "% 1"% * '. – eryksun

+0

Làm cách nào để viết chương trình C để nó chuyển tệp được nhấp đúp làm đối số cho tập lệnh python? – heltonbiker

+0

@eryksun không hoạt động đối với tôi. – Mikhail

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