6

我试图弄清楚如何将以下条件语句传递给 python 解释器的命令选项(-c)。

if sys.maxsize > 2**32:
    print '64'
else:
    print '32'

64

但是,我不断收到语法错误,例如:

>python -c "import sys; if sys.maxsize > 2**32: print '64' else: print '32';"
  File "<string>", line 1
    import sys; if sys.maxsize > 2**32: print '64' else: print '32';
                 ^
SyntaxError: invalid syntax

我发现很难找到这种用法的好例子。我一定在这里错过了一些大事......

4

3 回答 3

5

经过(非常)简短的搜索,我在任何地方都找不到此文档,但似乎-c严格采用表达式(即,可以出现在赋值的 RHS 上的东西),而不是语句。要在您的情况下解决此问题,您需要做两件事:

  1. 使用print 函数(函数调用是一个表达式)而不是 print 语句
  2. 使用 Python 的a if b else c 条件表达式

这给了你:

lvc@tiamat:~$ python -c "from __future__ import print_function; import sys; print('64' if sys.maxsize > 2**32 else '32')"
64
于 2012-07-31T11:26:26.937 回答
4

现有的两个答案更好,但这里有一个替代方案(用 Python 2.7 测试):

> python -c 'import sys; print 64 if sys.maxsize > 2**32 else 32'
64

另请参阅:Python 是否有三元条件运算符?

于 2012-07-31T11:41:01.867 回答
1

您可以使用多行(至少在 bash 中):

$ python -c "import sys
> if sys.maxsize > 2**32:
>  print '64'
> else:
>  print '32'"
64

要获取所有平台信息,您可以:

$ python -mplatform

或者只是一个架构:

$ python -c "import platform; print platform.architecture()"
('64bit', 'ELF')
于 2012-07-31T11:36:47.620 回答