0

Python で 2 つ以上の sys.argv 引数を渡す際にちょっとした質問があります。私は次のコードを使用してそれを行います。

from visa import *
import sys
inst = instrument(sys.argv[1])
inst.write("*rst; status:preset; *cls")
inst.write("voltage:UNIT Vrms")
inst.write("apply:SIN %s %s" % sys.argv[2] % sys.argv[3])

しかし、このコードは答えを生成しません。

しかし、コードを使用して値が埋め込まれた同じコードを渡すと

from visa import *
import sys
inst = instrument("USB0::0x164E::0x13EC::TW00008555")
inst.write("*rst; status:preset; *cls")
inst.write("voltage:UNIT Vrms")
inst.write("apply:SIN 1000, 0.5")

私は結果を得る。

足りないものはありますか?sys.argvPythonで 2 つ以上の 's を渡すには、どんなヘルプも非常に役立ちます。

4

2 に答える 2

4

タプルを文字列フォーマットに渡したい:

>>> "test %s %s" % ("a", "b")
'test a b'

現在実行している方法は機能しません.3番目の引数を2番目の引数に挿入して、フォーマット操作を2回実行するように指示しているためです。

str.format()新しいコードでは、 が文字列フォーマットの推奨される方法であることに注意してください。

>>> "test {0} {1}".format("a", "b")
'test a b'

たとえば、次のように使用します。

inst.write("apply:SIN {0}, {1}".format(sys.argv[2], sys.argv[3]))

これは Python 2.6 以降に存在し、モジュロ演算子で使用する必要があります。

于 2012-05-08T12:17:31.323 に答える
1

おそらく文字列のフォーマットが適切ではないので、試してみてください:

inst.write("apply:SIN %s %s" % (sys.argv[2], sys.argv[3]))

また、2番目のスニペットには追加のコンマがあるので、おそらく:

inst.write("apply:SIN %s, %s" % (sys.argv[2], sys.argv[3]))
于 2012-05-08T12:20:30.460 に答える