【发布时间】:2014-07-10 16:50:15
【问题描述】:
我正在使用 Python 的 subprocess 模块调用命令将值从文件写入内存。它看起来像:
import subprocess
f = open('memdump', 'r')
content = [line.split()[1] for line in f]
f.close()
tbl_pt0 = 0x4400
tbl_pt1 = 0x4800
process = 0
i = 0
for value in content:
p1 = subprocess.Popen("echo \"jaguar instance=0; jaguar wr offset=0x%x value=%s\" | pdt" \
% (tbl_pt0, value), shell = True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
p2 = subprocess.Popen("echo \"jaguar instance=0; jaguar wr offset=0x%x value=%s\" | pdt" \
% (tbl_pt1, value), shell = True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
tbl_pt0 += 0x4
tbl_pt1 += 0x4
这里的 pdt 是一个写入值的程序。文件中有 256 个值,因此 for 循环运行 256 个循环。但是当我到达循环 253 时,在 subprocess.py 中出现了太多打开的文件错误。任何人有任何想法?谢谢。
【问题讨论】:
-
不要使用
subprocess.PIPE,除非您从相应的管道读/写(在您的示例中没有)。
标签: python file subprocess popen