2009-07-14 35 views
8

Tôi đang cố thực hiện một loạt lệnh bằng cách sử dụng mô-đun con xử lý Pythons, tuy nhiên tôi cần phải đặt các biến shell có xuất trước khi chạy chúng. Tất nhiên trình bao không có vẻ dai dẳng nên khi tôi chạy một lệnh, các biến shell này sẽ bị mất.Python: Các biến shell liên tục trong quy trình con

Có cách nào để thực hiện việc này không? Tôi có thể tạo một/bin/sh quá trình, nhưng làm thế nào tôi sẽ nhận được các mã thoát của các lệnh chạy theo đó?

Trả lời

13

subprocess.Popen lấy đối số được đặt tên tùy chọn env là từ điển để sử dụng làm môi trường của quy trình con (những gì bạn mô tả là "biến trình bao"). Chuẩn bị một dict như bạn cần nó (bạn có thể bắt đầu với một bản sao của os.environ và thay đổi mà bạn cần) và vượt qua nó cho tất cả các cuộc gọi subprocess.Popen bạn thực hiện.

+0

Hoàn hảo, cảm ơn. – PeterBelm

+0

@PeterBelm, bạn được chào đón! –

5

Alex hoàn toàn chính xác. Để đưa ra ví dụ

current_env=environ.copy() 
current_env["XXX"] = "SOMETHING" #If you want to change some env variable 
subProcess.Popen("command_n_args", env=current_env) 
Các vấn đề liên quan