如何将字符串中的大括号转义到子进程

2024-07-05 09:14:25 发布

您现在位置:Python中文网/ 问答频道 /正文

    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}中转义大括号,并将like作为单独的部分命令处理,因此失败。你知道吗


Tags: importtxtcmdloginvalprofilepostcomments
2条回答

不,您的问题是使用split()构造要执行的命令的参数列表。您还使用引号,这是shell语法,即使您没有调用shell。你知道吗

首先使用数组,这样就不必拆分:

cmd = ('instaloader', ' post-metadata-txt={likes} likes, {comments} comments, {caption}', ' login=blabla_id', ' fast-update', profile_val)
subprocess.call(cmd)

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))

相关问题 更多 >