import os
import shutil
def listdirectory():
global computername
computername = input("What is the computer name? ")
completepathlist = fr"\\{computername}\C$\Users"
return os.listdir(completepathlist)
def username():
global completepath
global usernameinput
usernameinput = input("What is the user name? ")
completepath = fr"\\{computername}\C$\Users\{username}\AppData\Local\Google"
def programrunningcheck():
password = input("What is your password? ")
command = "taskkill /s " + str(computername) + " /u " + str(usernameinput) + " /p " +password+ " /im chrome.exe"
print(command)
os.system(command)
def deletegoogleapp():
shutil.rmtree(completepath)
#Functions being called
print(listdirectory())
username()
programrunningcheck()
deletegoogleapp()
Everything works up until deletegoogleapp function is called and receive a
\\DESKTOP-62A8SSM\C$\Users\"function username at
0x010C8B28\AppData\Local\Google
looks to be not passing the variable completepath from another function to the googleapp function.
3 Réponses :
Vous devez donc stocker la valeur de retour de username , pour l'instant, vous ne transmettez rien à deletegoogleapp . Vous pouvez donc faire:
u <- username() programrunningcheck() deletegoogleapp(u)
Cela devrait fonctionner étant donné que le chemin u renvoyé est valide.
changer le nom d'utilisateur de votre fonction:
global completepath
global usernameinput
def username(self):
usernameinput = input("What is the user name? ")
completepath = fr"\\{computername}\C$\Users\{username}\AppData\Local\Google"
Correction du problème d'origine avec var et modification du codage
import os
import shutil
import time
def listdirectory():
global computername
computername = input("What is the computer name? ")
completepathlist = fr"\\{computername}\C$\Users"
return os.listdir(completepathlist)
def username():
global completepath
usernameinput = input("What is the user name? ")
completepath = fr"\\{computername}\C$\Users\{usernameinput}\AppData\Local\Google"
def programrunningcheck():
print("We need your credentials to kill chrome")
techuser = input("What is your username? ")
techpassword = input("What is your password? ")
command = "taskkill /s " + str(computername) + " /u " + str(techuser) + " /p " +(techpassword)+ " /im chrome.exe"
time.sleep(5)
print(command)
os.system(command)
def deletegoogleapp():
shutil.rmtree(completepath)
#Functions being called
print(listdirectory())
username()
programrunningcheck()
deletegoogleapp()
Pouvez-vous modifier ceci et ajouter comment cela a résolu votre problème? Cela aidera les autres avec un problème similaire.
Les correctifs étaient que ma variable pour le nom d'utilisateur ne correspondait pas à mon nom de chaîne pour le nom d'utilisateur - le plus gros problème était de transmettre le nom d'utilisateur entré à taskkill - maintenant demande un compte séparé disposant des droits d'administrateur à distance pour tuer la tâche sur ce PC
ma suggestion serait que vous réécrivez ce que vous avez fait sans toutes ces fonctions, lorsque cela fonctionne, vous pouvez l'envelopper dans un seul appel de fonction. si vous avez besoin que chaque variable soit globale, avez-vous vraiment besoin de fonctions comme vous avez essayé de les utiliser?
Je suis d'accord que ce n'est peut-être pas mieux écrit - je suis nouveau dans la programmation et l'auto-apprentissage, donc je suis sûr que j'ai beaucoup de mauvaises pratiques
La variable
usernameutilisée parfr "\\ {computername} \ C $ \ Users \ {username} \ AppData \ Local \ Google"est le nom du fonction l'instruction est dans - c'est-à-direnom d'utilisateur de la fonction à 0x010C8B28. Je pense que vous voulezusernameinput.Vous pouvez utiliser des variables globales: stackoverflow.com/a/423596/6212957 OU vous pouvez transmettre la fonction précédente en tant que paramètre à obtenir sa valeur de retour
lastfunction (secondfunction ())ahed87 - j'adorerais voir un autre exemple d'écrire ceci dans une fonction - j'aimerais apprendre