。我想将cwd传递给使用子进程的方法。
设置这样的var:
cwd = kwargs.get('cwd')
然后在以下方法中使用它:
process = subprocess.Popen(list(command),
shell=False,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=cwd)
如果没有kwarg' cwd'我希望能够设置默认值。通过。目的是创建清晰简单的代码,并避免使用if语句。
在kwargs.get中没有默认值我收到错误:
[Errno 2] No such file or directory: 'None'
答案 0 :(得分:1)
检查功能的调用部分。 cwd=None
应该可以正常工作。
>>> subprocess.call(['ls'], cwd=None)
0
我怀疑调用者正在传递一个字符串'None'
。
>>> subprocess.call(['ls'], cwd='None')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory: 'None'
答案 1 :(得分:0)
答案是将默认kwarg cwd
设置为None
cwd = kwargs.get('cwd',None)