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厳密に(つまり、割り当ての右辺に表示されるもの)を取るようです。あなたのケースでこれを回避するには、次の 2 つのことを行う必要があります。

  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

既存の2つの答えの方が優れていますが、別の方法があります(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 に答える