2013-02-17 20 views

Trả lời

5

Bạn nói rằng bạn không thể thay đổi chương trình tạo ra dưa chua. Nhưng chắc chắn bạn có thể viết một chương trình Python riêng biệt để đọc dưa chuột và viết nó ra một lần nữa như JSON?

import json, pickle 

with open("data.pickle", "rb") as fpick: 
    with open("data.json", "w") as fjson: 
     json.dump(pickle.load(fpick), fjson) 
2

Trích từ documentation:

Định dạng dữ liệu được sử dụng bởi dưa là Python cụ thể. Điều này có lợi thế rằng không có giới hạn nào được áp đặt bởi các tiêu chuẩn bên ngoài chẳng hạn như XDR (không thể đại diện cho chia sẻ con trỏ); tuy nhiên nó có nghĩa là rằng các chương trình không phải Python có thể không thể tái tạo lại các đối tượng Python được ngâm.

Vì vậy, câu trả lời cho câu hỏi của bạn là không, bạn không thể deserialize nó trong C#. Bạn sẽ phải sử dụng một định dạng tương thích như XML hoặc JSON nếu bạn cần giao tiếp với các nền tảng khác.

3

Bạn có thể thử embedding IronPython và bỏ ghim từ đó, sau đó tạo đối tượng chưa được giải quyết có sẵn cho ứng dụng C#.

Lưu ý rằng dưa chua được thiết kế để tuần tự hóa Python đối tượng, vì vậy phương pháp này chỉ hoạt động nếu bạn có các đối tượng rất đơn giản với ánh xạ rõ ràng cho C# tương đương. Nó cũng đòi hỏi rằng môi trường IronPython của bạn có quyền truy cập vào tất cả các mô-đun xác định các lớp của tất cả các đối tượng chứa trong dưa chuột (giống như trong CPython).

Bạn nên cố gắng tuần tự hóa dữ liệu của mình theo cách tương tác khác (chẳng hạn như JSON hoặc XML) nếu có thể.

+0

Chúng tôi chạy tập lệnh Python từ C# nơi tôi làm việc. Tôi không thể nhớ chính xác tên lắp ráp bạn cần (Microsoft.Scripting tôi nghĩ). – BenDundee

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