我正在使用python脚本将数据加载到数据库批量加载器.加载程序的输入是stdin.我一直无法获得正确的语法来调用基于Unix的批量加载器,并传递要加载的python列表的内容.我一直在阅读有关Popen和PIPE的信息,但它们的表现...

我正在使用python脚本将数据加载到数据库批量加载器.
加载程序的输入是stdin.我一直无法获得正确的语法来调用基于Unix的批量加载器,并传递要加载的python列表的内容.
我一直在阅读有关Popen和PIPE的信息,但它们的表现却不尽如人意.
python列表包含要批量加载的数据库记录.在linux中,它看起来类似于:
echo "this is the string being written to the DB" | sql -c "COPY table FROM stdin"
用此命令使用的python列表替换echo语句的正确方法是什么?
我没有此过程的示例代码,因为我已经使用一些非常简单的语法尝试了Popen和PIPE的功能,但未获得所需的结果.
任何帮助将不胜感激.
谢谢
解决方法:
如果您的数据又短又简单,则可以对整个列表进行预格式化,并使用如下所示的子流程进行简单处理:
import subprocess
data = ["list", "of", "stuff"]
proc = subprocess.Popen(["sql", "-c", "COPY table FROM stdin"], stdin=subprocess.PIPE)
proc.communicate("\n".join(data))
如果数据太大而无法像这样进行预格式化,那么您也可以尝试直接使用stdin管道,尽管如果您也需要从stdout / stderr读取数据,则在使用管道时子进程模块会出现问题.
for line in data:
print >>proc.stdin, line
本文标题为:使用python列表作为使用stdin作为输入的linux命令的输入


基础教程推荐
- SQLite5-使用Python来读写数据库 2023-08-04
- python列表中remove()函数的使用方法详解 2023-08-09
- python学习-linux基本操作 2023-09-04
- Python Linux系统管理与自动化运维 2023-09-04
- 详解Python中的List 2023-08-04
- python-nginx / gunicorn Django Rest Framework应用程序的端口代理 2023-11-14
- Python实现解析ini配置文件的示例详解 2022-10-20
- python 多进程 2023-11-12
- 如何将python ImportError捕获为Shell错误 2023-11-14
- Python WindowsError:[错误3]尝试重命名时系统找不到指定的文件 2023-11-14