Passage d'une chaîne en argument à une fonction - pourquoi n'est-il pas de travail?
Essayant de faire passer une chaîne de caractères en argument à une fonction, qui sera ensuite utilisé comme une variable dans la fonction. Pour quelque raison, quand je suis en train de le faire, ça ne fonctionne pas. Ce que je fais mal?
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")
Modifié le programme. Après avoir essayé de lancer ce nouveau-en un, obtenez ce message d'erreur:
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
- Veuillez préciser de quelle façon il ne fonctionne pas. Êtes-vous essayer d'obtenir la valeur de la
printer
argument en argument de la premièresubprocess.call()
ligne? - Dans quel sens est-il pas de travail?
- Vous avez besoin des deux points après si les déclarations.
if printer == 'saturn' or 'jupiter' or 'neptune'
vous avez oublié certainsprinter ==
ici- aussi loin que je pensais, "chaîne"variable"string" doit insérer la variable dans la chaîne, mais j'aurais du utiliser +, ne serait-ce pas I.
- Vous avez oublié de mettre l'opérateur " + " tout en utilisant la variable. Comme ceci:
subprocess.call(r'Cscript c:/windows/System32/Printing_Admin_Scripts/en-US/Prnport.vbs -a -r "'+printer+'.print.mediag.com" -h "'+printer+'.print.mediag.com" -o raw')
Essayer la même chose pour les autres états - Désolé pour la bêtise de cette question, l'été d'environ 6 mois depuis que j'ai programmé en Python, c'est la décoloration!
Vous devez vous connecter pour publier un commentaire.
Vous devez spécifier
variable == value
pour chaqueor
déclaration, comme suit:Vous avez aussi oublié la fin du côlon sur chaque
if
déclaration.Si vous voulez dire "cette variable correspond cette liste de valeurs?" les éléments suivants pourraient être plus propre pour vous:
Vous devez également ajouter des variables à cordes - vous ne pouvez pas il suffit de les placer adjacentes:
'string' 'string'