Python 将空CWD传递给子流程
。我想将cwd传递到使用子流程的方法中 如下所示设置变量:Python 将空CWD传递给子流程,python,subprocess,Python,Subprocess,。我想将cwd传递到使用子流程的方法中 如下所示设置变量: process = subprocess.Popen(list(command), shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIP
process = subprocess.Popen(list(command),
shell=False,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=cwd)
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]没有这样的文件或目录:“None”
检查函数的调用部分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'
>子流程调用(['ls'],cwd='None')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/subprocess.py”,第522行,在调用中
返回Popen(*popenargs,**kwargs)。等待()
文件“/usr/lib/python2.7/subprocess.py”,第710行,在__
错误读取,错误写入)
文件“/usr/lib/python2.7/subprocess.py”,第1327行,在执行子进程中
引发子对象异常
OSError:[Errno 2]没有这样的文件或目录:“无”
答案是将默认的kwargcwd
设置为None
cwd=kwargs.get('cwd',None)
显然,您的kwargs
不包含“cwd”
,或者kwargs[“cwd”]
是None
@NPE-我已经稍微澄清了我的问题。kwargs.get('cwd')
和kwargs.get('cwd',None)
应该会产生相同的结果。