【问题标题】:How to indent with "python -c" on the command line [duplicate]如何在命令行上使用“python -c”缩进[重复]
【发布时间】:2020-08-21 11:52:37
【问题描述】:

在命令行上,

python -c "z = [i for i in range(5)]; print (z)" 给了

[0, 1, 2, 3, 4]

; 表示应该有一个换行符。

但是换行符后跟一个制表符呢?还是(喘气)两个标签?

以下代码不起作用,但它说明了我希望能够做什么:

python -c "z = [i for i in range(5)]; for i in z: print (i)"

并得到输出:

1
2
3
4
5

所以基本上问题是:如何使用python -c 执行以下代码?

z = [i for i in range(5)] 
for i in z:
    print (i)

【问题讨论】:

  • 如果你在字符串中使用 all,你可以使用 "\n" 作为新行并添加正确数量的空格。
  • 请澄清您的问题。对于python -c,多行程序是一个完全有效的输入。你知道如何在你的 shell 中编写多行字符串吗?
  • @pfabri 是的,SilentGhost 的答案有效,但不是公认的答案,谢谢!

标签: python python-3.x


【解决方案1】:

请注意,;不是始终是换行符的有效替代品,所以问题是:我如何提供任意代码。这基本上取决于知道如何使用你的 shell。

bash 中,您可以使用$'...' 引用构造真正的单行语句:

python -c $'z = [i for i in range(5)]\nfor i in z:\n    print(i)'

如果您可以自己嵌入换行符,则更易于阅读:

python -c '
z = [i for i in range(5)]
for i in z:
    print(i)
'

请注意,由于缩进非常重要,如果对 python 本身 的调用在 shell 脚本中缩进,您将无法轻松做到这一点,因为您的脚本缩进将是参数的一部分自己。

if [[ cmd = "do it" ]]; then

    # The Python script has to be dedented
    python -c '
z = [i for i in range(5)]
for i in z:
    print(i)
'
fi

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2014-02-04
    • 2013-07-11
    • 2014-12-04
    • 2018-08-13
    相关资源
    最近更新 更多