如何正确使用Python单行命令运行脚本解决语法错误
报错原因
Python语法规定,分号仅能分隔同一行内的简单语句(包括import、赋值、普通函数调用这类不带缩进块的语句)。for属于带缩进代码块的复合语句,无法直接通过分号拼接在前面的简单语句之后,因此会在for关键字位置抛出SyntaxError。
可用调整方案
方案1:exec包裹原代码(推荐,无需改动原有逻辑)
用三引号字符串包裹完整的原有代码传入exec执行,完全不需要修改原代码逻辑,注意做好引号嵌套即可:
python -c ' from modulefinder import ModuleFinder finder = ModuleFinder() finder.run_script("/usr/bin/xbacklight") for name, mod in finder.modules.items(): print(name) '
如果需要严格压缩成无换行的纯单行,可在exec的字符串内用\n标记换行:
python -c 'exec("from modulefinder import ModuleFinder\nfinder = ModuleFinder()\nfinder.run_script(\"/usr/bin/xbacklight\")\nfor name, mod in finder.modules.items():\n print(name)")'
方案2:循环改写为表达式形式(纯单行无特殊字符)
将for循环改写为列表推导式(表达式支持被分号分隔),这种写法会生成一个全为None的无用临时列表,仅适合短脚本快速使用:
python -c 'from modulefinder import ModuleFinder; finder = ModuleFinder(); finder.run_script("/usr/bin/xbacklight"); [print(name) for name, mod in finder.modules.items()]'
- 小提示:写
python -c参数时,外层用单引号包裹整段代码的话,代码内部的字符串优先用双引号,能省去很多转义引号的麻烦。
内容的提问来源于stack exchange,提问作者user17227456
相关产品推荐
相关产品推荐

