Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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
CouchDB POST响应,通过Python'通过curl发送;s子流程模块丢失(curl代码53)。为什么呢?_Python_Couchdb_Subprocess - Fatal编程技术网

CouchDB POST响应,通过Python'通过curl发送;s子流程模块丢失(curl代码53)。为什么呢?

CouchDB POST响应,通过Python'通过curl发送;s子流程模块丢失(curl代码53)。为什么呢?,python,couchdb,subprocess,Python,Couchdb,Subprocess,我试图通过子流程模块使用curl从python向couchDB添加一个文档。我可以通过命令行很好地完成,但不能通过python 下面是命令行代码 curl -X POST http://doug:enter@localhost:5984/mydb/ -H "Content-Type: application/json" -d {} 每次都使用此命令创建文档。但是,Python通过子流程模块发出的相同命令失败。我想知道是否有人能指出在哪里以及为什么会丢失回复(CouchDB应该发送一个响应,但错

我试图通过子流程模块使用curl从python向couchDB添加一个文档。我可以通过命令行很好地完成,但不能通过python

下面是命令行代码

curl -X POST http://doug:enter@localhost:5984/mydb/ -H "Content-Type: application/json" -d {}
每次都使用此命令创建文档。但是,Python通过子流程模块发出的相同命令失败。我想知道是否有人能指出在哪里以及为什么会丢失回复(CouchDB应该发送一个响应,但错误是curl没有收到一个)

这是代码

import subprocess

args = ['curl', '-X', 'POST', 'http://doug:enter@localhost:5984/mydb/', '-H', '"Content-Type: application/json"', '-d', '{}']

try:
    retcode = subprocess.call(args)
except OSError:
    print('os error')
except ValueError:
    print('value error')

print(retcode)
其他信息:

我正在运行kubuntu11.04、curl 7.21.3和python2.7.1


CouchDB数据库在我的本地机器上,正如我前面提到的,它工作得很好。

您没有包括shell=True。如果不使用shell,子进程将不会使用shell,因此与在命令行上运行有所不同

retcode = subprocess.call(args, shell=True)
这会解决你的问题。请注意,这可能会导致args无法正常工作,因为它可能需要一个字符串。如果是这种情况,请尝试:

retcode = subprocess.call(' '.join(args), shell=True)