import subprocess import sys username = 'fergus.barker' password = '*************' proxy = 'proxy.det.nsw.edu.au:8080' options = '%s:%s@%s' % (username,password,proxy) subprocess.Popen('export http_proxy=' + options)
但在跑步时,我得到:
Traceback (most recent call last): File "school_proxy_settings.py",line 19,in <module> subprocess.Popen('export http_proxy=' + options) File "/usr/lib/python2.6/subprocess.py",line 621,in __init__ errread,errwrite) File "/usr/lib/python2.6/subprocess.py",line 1126,in _execute_child raise child_exception OSError: [Errno 2] No such file or directory
为什么会这样呢?
解决方法
你可以做这样的事,虽然你必须改变你对Popen的号召.
http://docs.python.org/library/subprocess.html
您可以指定shell = True以使其使用shell命令.
class subprocess.Popen(args,bufsize = 0,executable = None,stdin = None,stdout = None,stderr = None,preexec_fn = None,close_fds = False,shell = False,cwd = None,env = None,universal_newlines = False,startupinfo = None,creationflags = 0)
On Unix,with shell=True: If args is a string,it specifies the command string to execute through the shell. This means that the string must be formatted exactly as it would be when typed at the shell prompt. This includes,for example,quoting or backslash escaping filenames with spaces in them. If args is a sequence,the first item specifies the command string,and any additional items will be treated as additional arguments to the shell itself. That is to say,Popen does the equivalent of:
Popen(['/bin/sh','-c',args[0],args[1],...])