2012-04-11 21 views
-2

関数に文字列引数を渡そうとしましたが、関数全体で変数として使用されます。何らかの理由で、私がこれをやろうとしているとき、それは動作していません。私は間違って何をしていますか?関数に文字列引数を渡す - それはなぜ機能していないのですか?

import subprocess 
def printerSetup(printer): 
    subprocess.call(r'Cscript c:/windows/System32/Printing_Admin_Scripts/en-US/Prnport.vbs -a -r "'printer'.print.web.com" -h "' + printer + '.print.web.com" -o raw') 
    if printer == 'saturn' or printer == 'jupiter' or printer == 'neptune': 
     subprocess.call(r'rundll32 printui.dll, PrintUIEntry /if /b "' + printer + '" /f w:\printers\toshibae3511\eng\est_c2.inf /r "' + printer + '.print.web.com" /m "TOSHIBA e-STUDIO Color PS3"') 
    if printer == 'mercury': 
     subprocess.call(r'rundll32 printui.dll, PrintUIEntry /if /b "' + printer + '" /f w:\printers\dell1720\drivers\print\dell1720\DKABJ740.inf /r "' + printer + '.print.web.com" /m "Dell Laser Printer 1720dn"') 

printerSetup("neptune") 
printerSetup("mercury") 

プログラムを編集しました。この新しいものを実行しようとした後、このエラーが出る:

C:\Python27\Projects\Printer Setup>c:\python27\python.exe saturn.py 
    File "saturn.py", line 3 
    subprocess.call(r'Cscript c:/windows/System32/Printing_Admin_Scripts/en-US/P 
rnport.vbs -a -r "'printer'.print.web.com" -h "' + printer + '.print.web.c 
om" -o raw') 

         ^
SyntaxError: invalid syntax 
+0

どのように動作しないのかを指定してください。 'printer'引数の値を最初の' subprocess.call() '行の引数に入れようとしていますか? – unwind

+0

どのような意味では機能しませんか? – Marcin

+2

if文の後にコロンが必要です。 –

答えて

5

あなたはそうのように、各or文のvariable == valueを指定する必要があります。

if printer == 'saturn' or printer == 'jupiter' or printer == 'neptune': 

ます。また、各if文の末尾にコロンを忘れてしまいました。あなたが言いたい場合は

「この変数試合にこの値のリストしていますか?」、次はあなたのためにきれいかもしれません:あなたは、文字列に変数を追加する必要が

if printer in ('saturn', 'jupiter', 'neptune'): 

- あなたができるだけでなく、それらを隣接して配置してください:

'string' + variable + 'string' 

# not 

'string'variable'string' 
+0

しかし、このように文字列を追加することはできますが、変数 'string '' string''を使用することはできません – GP89

関連する問題