質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

378閲覧

変数の値を引数に割り当てたい

ne-on

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/09/14 16:57

#pythonで書いております(スクリプト)

scripts.py

1 import commands 2 clid =commands.getoutput('cloudstack-api listZones -t id |grep e8|cut -f 2 -d "|" ') 3 print clid 4 5 import commands 6 clst =commands.getoutput('cloudstack-api listServiceOfferings -t id,displaytext |grep bd226b3b-6ae7-454d-b53d-c886f7eebe42 |cut -f 2 -d "|"') 7 print clst 8 9 import commands 10 cltp =commands.getoutput('cloudstack-api listTemplates --templatefilter executable -t id,ostypename|grep 05e7df20-7b4d-4b5c-954a-0893939dd5e5|cut -f 2 -d "|"|uniq -d') 11 print cltp 12 13 import commands 14 clmk=commands.getoutput('cloudstack-api deployVirtualMachine --serviceofferingid $clst --templateid $cltp --zoneid $clid --group test_gorup --keypair kanegon --name test_api-1') 15 print clmk 16

#問題点
clmk=commands.getoutputの前でスクリプトを実行している結果を変数としてプッシュしています

★clmkで実行しているスクリプトで変数を引数として割り当て、実行したいと思っております。

import commands
clmk=commands.getoutput('cloudstack-api deployVirtualMachine --serviceofferingid $clst --templateid $cltp --zoneid $clid --group test_gorup --keypair kanegon --name test_api-1')
print clmk
の部分で
--serviceofferingid 引数
--templateid 引数
--zoneid 引数

引数は固定のため今回は除外
--group test_gorup
--keypair XXXXX
--name test_api-1

Pythonでなくシェルであれば容易じゃないかということになりますが、現在Pythonを勉強中となっております。commands.getoutputの使い方がググってもほとんどヒットせずに立ちすくんでおります・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

普通に文字列を組み立てれば良いのでは。

http://docs.python.jp/2/library/stdtypes.html#string-formatting

投稿2017/09/14 23:27

calkinos

総合スコア452

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ne-on

2017/09/17 19:13

ご回答ありがとうございます。 こちらのHPを見てもよくわかりませんでした。シェルでたたいてるものに対しても適応できるのでしょうか。思うように動作しませんでした。
calkinos

2017/09/18 07:09 編集

%記法を用いると ``` test="hello" test2="world" output='%s %s' % (test, test2) ``` などとした場合、 outputには 'hello world' が入ります。 command.getoutput の引数は文字列なので、上記のように%記法で文字列を組み立て、それを引数にすることで、任意の変数の内容を利用できますよね。
ne-on

2017/09/18 16:15

ご教示ありがとうございます。%記法の使用方法はいかのような流れでよいでしょうか・・       cl1= clid cl2= clst cl3= cltp import commands clmk =commands.getoutput('cloudstack-api deployVirtualMachine --serviceofferingid %s --templateid %s --zoneid %s --group test_gorup --keypair kanegon --name test_api-1') % (cl2,cl3,cl1) print clmk と思いましたが、相変わらずうまくいきません。 TypeError: not all arguments converted during string formatting とエラーが出力されます。空白行を開けているためのエラー?となります 引数なので空白開けないと結果が出力されないな・・と思いつつ壁にぶつかりました・・
calkinos

2017/09/20 00:00

'文字列' % (変数) という記法になりますので commands.getoutput('文字列' % (変数)) のような形ですね 本題とは関係ありませんが http://docs.python.jp/2/library/commands.html commands ではなく subprocess を使うことが推奨されています。
ne-on

2017/09/22 17:21

ありがとうございます。 無事解決できました( *´艸`) 色々勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問