import subprocess
profile_val = 'ishan'
cmd = 'instaloader --post-metadata-txt="{likes} likes, {comments} comments, {caption}" --login=blabla_id --fast-update' + ' ' + profile_val)
subprocess.call(cmd.split())
它没有在{likes}中转义大括号,并且像单独的命令一样对待并且失败。
答案 0 :(得分:1)
否,您的问题是您正在使用split()
来构造要执行的命令的参数列表。您还使用了引号,引号是shell语法,即使您不调用shell也是如此。
首先使用数组,所以不必拆分:
cmd = ('instaloader', '--post-metadata-txt={likes} likes, {comments} comments, {caption}', '--login=blabla_id', '--fast-update', profile_val)
subprocess.call(cmd)
答案 1 :(得分:0)
Stephane Chazelas提供了最佳解决方案,但是如果您必须拆分类似shell的命令,则可以使用shlex。
import subprocess
import shlex
profile_val = 'ishan'
cmd = 'instaloader --post-metadata-txt="{likes} likes, {comments} comments, {caption}" --login=blabla_id --fast-update "' + profile_val + '"'
subprocess.call(shlex.split(cmd))