在python解释器-c命令中使用条件
我试图找出如何将以下条件语句传递到python解释器的命令选项(-c)中 但是,我不断地遇到语法错误,例如:在python解释器-c命令中使用条件,python,command-line,conditional,Python,Command Line,Conditional,我试图找出如何将以下条件语句传递到python解释器的命令选项(-c)中 但是,我不断地遇到语法错误,例如: >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';
>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
>python-c“导入sys;if sys.maxsize>2**32:print'64'其他:print'32'
文件“”,第1行
导入系统;如果sys.maxsize>2**32:打印'64'否则:打印'32';
^
SyntaxError:无效语法
我发现很难找到这种用法的好例子。我肯定错过了一些重要的东西…经过(非常)简短的搜索,我在任何地方都找不到记录在案的内容,但似乎-c
严格地采用了表达式(即,可以出现在作业右侧的内容),而不是语句。在您的案例中,要解决这个问题,您需要做两件事:
a
lvc@tiamat:~$ python -c "from __future__ import print_function; import sys; print('64' if sys.maxsize > 2**32 else '32')"
64
可以使用多行(至少在bash中): 要获取所有平台信息,您可以:
$ python -mplatform
或者只是一个架构:
$ python -c "import platform; print platform.architecture()"
('64bit', 'ELF')
现有的两个答案更好,但这里有一个替代方案(使用Python 2.7测试):
另请参见:我想你的意思是“32”,但这很好。那个么,语句和表达式是等价的吗?在Python文档中:
当使用-c命令调用时,它将执行作为命令给出的Python语句。此处,该命令可能包含多个由换行符分隔的语句。在Python语句中,前导空格非常重要代码>@DevHopeful_2012我的意思是其他'32'
;现在修好了。手册页的这一部分似乎在说,-c
接受你能在解释器提示下输入的任何东西,这与我实际看到的东西不符语句”是Python中“表达式”的超集-参见,例如。但正如我在回答中所说的,将“表达式”视为“可以在=
的RHS上放置的任何东西”。对于体系结构,您是否仍然需要注意OSX,在OSX中,解释器可以作为不同的比特运行?我对细节不太清楚,但我看到一些评论说platform.architecture()不可信。它是一个sys.maxsize
似乎是一个有效的解决方法(我不知道是否有python工作的系统,但是sizeof size\u t!=sizeof pointer
)。嗯,我想它看起来更像这样。我相信您的回答同样优雅,我的要求只适用于Python2.7或更高版本。所以,这肯定也会起作用。然而,lvc击败了你,澄清了我的误解。无论如何谢谢你的帮助!
$ python -mplatform
$ python -c "import platform; print platform.architecture()"
('64bit', 'ELF')
> python -c 'import sys; print 64 if sys.maxsize > 2**32 else 32'
64