subprocess.callstdout和std的记录器信息和错误

2024-09-27 21:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个伐木工人。我正在调用外部进程。我把stdout和stderr从这个进程中分离出来,这样我就可以记录它们了。在

我有这个错误:

Traceback (most recent call last): File "importData.py", line 198, in importData(ftpServerName,ftpU,ftpP,directory,filematch,source,destination) File "importData.py", line 99, in importData p = subprocess.Popen(['mongoimport --db AutoPrivilege -c cars stockvo.json --jsonArray --upsert --drop'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) File "/usr/lib/python2.7/subprocess.py", line 710, in init errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory

我的脚本:

...
        #import json file to MongoDB
        logger.info(' Import json file to MongoDB')
        #subprocess.call('mongoimport --db AutoPrivilege -c cars stockvo.json --jsonArray --upsert --drop',shell=True)
        p = subprocess.Popen(["mongoimport --db AutoPrivilege -c cars stockvo.json --jsonArray --upsert --drop"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        stdout, stderr = p.communicate()

        if stdout:
            logger.info(stdout)
        if stderr:
            logger.error(stderr)
...

有没有办法解决这个问题?在


Tags: inpyjsondbstderrstdoutlinecars
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:55

subprocess.Popen构造函数接受参数列表,而不是字符串:

p = subprocess.Popen(['mongoimport', ' db', 'AutoPrivilege', '-c',
                      'cars', 'stockvo.json', ' jsonArray', ' upsert',
                      ' drop'])...

相关问题 更多 >

    热门问题