使用“python -c”控制台命令模式实现for循环

我想python -c通过 shell 脚本运行以下代码:


import json,sys

obj=json.loads(open('/temp/209/209formatted_response.json','r').read())

revision=obj['component']['referencingComponents'][0]['revision']


for element in list(revision):

    if 'lastModifier' in element:

        del revision['lastModifier']


print(revision)

使用python -c,它在没有 for 循环的情况下运行良好,但如果我在其中包含 for 循环,它会抛出错误:


下面工作正常:


python -c "import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision']"

下面给出错误:


$ /opt/app/anaconda3/envs/anaconda3/bin/python -c "import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision'];for element in list(revision):    if 'lastModifier' in element:        del revision['lastModifier']; print(revision)"

  File "<string>", line 1

    import json,sys; obj=json.loads(open('/temp/209/209formatted_response.json','r').read());revision=obj['component']['referencingComponents'][0]['revision'];for element in list(revision):    if 'lastModifier' in element:        del revision['lastModifier']; print(revision)

                                                                                                                                                                                      ^

SyntaxError: invalid syntax


我什至尝试在行尾的\n循环的每个语句之前使用,但没有成功;


慕容3067478
浏览 146回答 2
2回答

GCT1015

一种可能的解决方案是使用换行符,但不要直接添加它们:$ python3 -c "exec(\"n = 3\nfor i in range(n):\n&nbsp; print(i)\")"012像您一样添加\n,但也将代码括起来"exec(\"...\")"或者您可以插入真正的换行符:$ python3 -c "n = 3> for i in range(n):>&nbsp; &nbsp;print(i)"012

慕码人8056858

问题在于缩进,因此您可以使用过滤函数来代替使用 for 和 if 语句revision&nbsp;=&nbsp;list(filter(lambda&nbsp;x:&nbsp;not&nbsp;'lastModifier'&nbsp;in&nbsp;x,&nbsp;list(revision)));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python