我正在尝试使用以下命令导入json文件:mongoimport -c collection -d db < file.json
。当我从shell调用此命令时,将导入每个文档。但是,当我尝试使用模块子流程从python脚本中调用它时,如下所示:subprocess.call('mongoimport -c collection -d db < file.json', shell=True)
,我有以下错误:Failed: error processing document #37: unexpected EOF
。有人可以解释一下为什么它适用于shell而不是从脚本中调用它吗?
提前致谢。
答案 0 :(得分:1)
我的意思是因为subprocess.Popen构造函数接受args列表,而不是字符串,如下所示:
p = subprocess.Popen(['mongoimport', '--db', 'AutoPrivilege', '-c','cars', 'stockvo.json', '--jsonArray', '--upsert','--drop'])...
答案 1 :(得分:0)
您可以使用 os 命令:
for dump_file in dumped_files:
collection_name = dump_file.split('/')[-1].split('.')[0]
# Restoring collection
os.system(f'mongoimport --host {host} -d {database} --port {port} --collection {collection_name} --file {backup_file} --jsonArray --upsert')