Tôi muốn chạy một kịch bản Python từ một kịch bản Python khác. Tôi muốn vượt qua các biến như tôi sẽ sử dụng dòng lệnh. Ví dụ: tôi sẽ chạy tập lệnh đầu tiên của mình để lặp lại thông qua danh sách các giá trị (0,1,2,3) và chuyển chúng sang tập lệnh thứ 2 0, v.v.Tôi đã tìm thấy Stack & nbsp; Overflow Câu 1186789 là một câu hỏi tương tự, nhưng câu trả lời của ARS gọi một hàm, trong đó tôi muốn chạy toàn bộ tập lệnh, không chỉ là một hàm và câu trả lời của Balpha gọi tập lệnh mà không có tranh luận. Tôi đã thay đổi điều này thành một cái gì đó như bên dưới như một bài kiểm tra:
Nhưng nó không chấp nhận các biến đúng cách. Khi tôi in ra 1 trong script2.py, đó là lệnh gọi lệnh gốc đến tập lệnh đầu tiên "['C: \ script1.py'].Tôi không thực sự muốn thay đổi tập lệnh gốc (tức là script2.py trong ví dụ của tôi) vì tôi không sở hữu nó. Tôi nghĩ rằng phải có một cách để làm điều này; Tôi chỉ bối rối cách bạn làm điều đó.
Được hỏi ngày 23 tháng 9 năm 2010 lúc 19:31Sep 23, 2010 at 19:31
Gern Blanstongern BlanstonGern Blanston 42.3K19 Huy hiệu vàng49 Huy hiệu bạc64 Huy hiệu đồng19 gold badges49 silver badges64 bronze badges 8 Hãy thử sử dụng 2:
3 là khác nhau vì nó được thiết kế để chạy một chuỗi các câu lệnh Python trong bối cảnh thực hiện hiện tại. Đó là lý do tại sao 1 không thay đổi cho bạn.
Đã trả lời ngày 23 tháng 9 năm 2010 lúc 19:33Sep 23, 2010 at 19:33
Greg Hewgillgreg HewgillGreg Hewgill 916K178 Huy hiệu vàng1133 Huy hiệu bạc1267 Huy hiệu đồng178 gold badges1133 silver badges1267 bronze badges 16 Lý tưởng nhất là tập lệnh Python bạn muốn chạy sẽ được thiết lập với mã như thế này gần cuối:
Nói cách khác, nếu mô -đun được gọi từ dòng lệnh, nó phân tích các tùy chọn dòng lệnh và sau đó gọi một hàm khác, 5, để thực hiện công việc thực tế. (Các đối số thực tế sẽ khác nhau và phân tích cú pháp có thể liên quan nhiều hơn.)Tuy nhiên, nếu bạn muốn gọi một tập lệnh như vậy từ một tập lệnh Python khác, bạn chỉ cần 6 và gọi trực tiếp 7, thay vì đi qua hệ điều hành. 2 sẽ hoạt động, nhưng đó là cách đường vòng (đọc "chậm") để làm điều đó, vì bạn đang bắt đầu một quy trình phiên dịch Python hoàn toàn mới mỗi lần không có nho khô.Đã trả lời ngày 23 tháng 9 năm 2010 lúc 23:19Sep 23, 2010 at 23:19
8 Đây vốn là điều sai để làm. Nếu bạn đang chạy tập lệnh Python từ một tập lệnh Python khác, bạn nên giao tiếp qua Python thay vì thông qua HĐH:
Trong một thế giới lý tưởng, bạn sẽ có thể gọi một chức năng bên trong 9 trực tiếp:
Nếu cần thiết, bạn có thể hack 1. Có một cách gọn gàng để làm điều này bằng cách sử dụng Trình quản lý ngữ cảnh để đảm bảo rằng bạn không thực hiện bất kỳ thay đổi vĩnh viễn nào.
Tôi nghĩ rằng điều này là tốt hơn để chuyển tất cả dữ liệu của bạn cho HĐH và trở lại; Đó chỉ là ngớ ngẩn. Đã trả lời ngày 23 tháng 9 năm 2010 lúc 19:43Sep 23, 2010 at 19:43
KatrielkatrielKatriel 117K19 Huy hiệu vàng133 Huy hiệu bạc165 Huy hiệu Đồng19 gold badges133 silver badges165 bronze badges 11 Tôi nghĩ rằng thực hành tốt có thể là một cái gì đó như thế này;
Theo tài liệu, mô -đun phụ cho phép bạn sinh ra các quy trình mới, kết nối với đường ống đầu vào/đầu ra/lỗi của chúng và có được mã trả lại của chúng. Mô -đun này dự định thay thế một số mô -đun và chức năng cũ hơn:
Sử dụng Truyền thông () chứ không phải .Stdin.Write, .stdout.read hoặc .stderr.read để tránh bế tắc do bất kỳ bộ đệm ống hệ điều hành nào khác lấp đầy và chặn quy trình con. Đọc ở đây Đã trả lời ngày 29 tháng 10 năm 2014 lúc 8:47Oct 29, 2014 at 8:47
MedhatmedhatMedhat 1.58415 huy hiệu bạc31 huy hiệu đồng15 silver badges31 bronze badges 0
Duncan Jones 65.1K28 Huy hiệu vàng185 Huy hiệu bạc246 Huy hiệu đồng28 gold badges185 silver badges246 bronze badges Đã trả lời ngày 12 tháng 11 năm 2013 lúc 12:06Nov 12, 2013 at 12:06
NikosnikosNikos 3973 Huy hiệu bạc2 Huy hiệu Đồng3 silver badges2 bronze badges 3 |