Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将空CWD传递给子流程_Python_Subprocess - Fatal编程技术网

Python 将空CWD传递给子流程

Python 将空CWD传递给子流程,python,subprocess,Python,Subprocess,。我想将cwd传递到使用子流程的方法中 如下所示设置变量: process = subprocess.Popen(list(command), shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIP

。我想将cwd传递到使用子流程的方法中

如下所示设置变量:

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]没有这样的文件或目录:“无”

答案是将默认的kwarg
cwd
设置为
None


cwd=kwargs.get('cwd',None)

显然,您的
kwargs
不包含
“cwd”
,或者
kwargs[“cwd”]
None
@NPE-我已经稍微澄清了我的问题。
kwargs.get('cwd')
kwargs.get('cwd',None)
应该会产生相同的结果。