boto3中是否存在可靠的方法来确定AWS资源所属的CloudFormation堆栈?还是它完全属于一个堆栈?假设我有一个DynamoDB表或EC2实例,如何确定它属于哪个堆栈?用于CloudFormation的boto3 API在资源级别上变得非常模糊,因此它似乎出现了。任何帮助深表感谢。
所以我试图将HandBrakeCLI的输出捕获为Python子进程.这不是stderr的问题,因为每次更新都会在类似文件的管道中创建一个新行.但是,使用stdout,HandBrakeCLI进行就地更新,我很难捕获它们.我甚至不知道调用就地更新的内容,这使得查找相关提示有点棘手.
到目前为止,我提出的唯一解决方案是将stdout写入实际文件并从中读取,但我宁愿以理智的方式(在内存中)这样做.
COMMAND = ['HandBrakeCLI', '-v', '-i', 'in.m4v', '-o', 'out.m4v', '-Z', 'Normal']
outfile = open('output.txt', 'w')
proc = subprocess.Popen(COMMAND, stdout=outfile, stderr=subprocess.PIPE)
infile = open('output.txt', 'r')
while proc.poll() is None:
print infile.read()
infile.seek(0)
Run Code Online (Sandbox Code Playgroud)
这有效,但必须有更好的方法.当尝试使用communic()或只是简单的proc.stdout.read()时,我什么也得不到.
我究竟做错了什么?谢谢!
按@wim建议我检查了看看HandBrakeCLI提供的原始输出是什么,它看起来像这样:
\rEncoding: task 1 of 1, 0.15 %
Run Code Online (Sandbox Code Playgroud)
处理以\ r为前缀的标准输出的最佳方法是什么?