程序开始时的Python函数调用
我是python新手,相信有一个简单的答案,但似乎无法找到答案。有没有办法在程序开始时进行函数调用。正如您所看到的,我正在运行代码,然后要求再次运行它,这就是它现在执行函数调用的地方。这可以按原样工作,但我希望除去while循环和函数之外的所有内容,以便清理代码。谢谢程序开始时的Python函数调用,python,python-3.2,function-call,Python,Python 3.2,Function Call,我是python新手,相信有一个简单的答案,但似乎无法找到答案。有没有办法在程序开始时进行函数调用。正如您所看到的,我正在运行代码,然后要求再次运行它,这就是它现在执行函数调用的地方。这可以按原样工作,但我希望除去while循环和函数之外的所有内容,以便清理代码。谢谢 这就是为什么: import subprocess import re def server_checker(): print ("This will print any service that is stopped
这就是为什么:
import subprocess
import re
def server_checker():
print ("This will print any service that is stopped or unknown \n")
#servers
server = str(input("Enter server to query(IP Address): "))
server_list = server.split(",")
server_count = len(server_list)
#services
service = str(input("Enter service to query: "))
service_list = service.split(",")
service_count = len(service_list)
#server loop
for a in range(len(server_list)):
server_net_use = 'net use'+r' \\'+server_list[a]+r'\ipc$ /user:Administrator itv'
server_disconnect = 'net use'+r' \\'+server_list[a]+r'\ipc$ /d'
server_sc = r'\\'+server_list[a]
subprocess.check_output(server_net_use, universal_newlines=True)
#service loop
for i in range(len(service_list)):
x = subprocess.check_output(['sc', server_sc, 'query', service_list[i]], universal_newlines=True)
y = re.sub('\s+',' ',x)
if 'FAILED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - Unknown Service!\n')
elif 'STOPPED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - '+y.split(" ")[10]+'\n')
if __name__ == "__main__":
server_checker()
while(True):
answer = str(input("Do you want to query another service? y/n: "))
if answer.lower() in ["yes","y","letsgo"]:
subprocess.check_output(server_disconnect, universal_newlines=True)
print ("\n")
server_checker()
elif answer.lower() in ["no","n,","nowayhosay"]:
subprocess.check_output(server_disconnect, universal_newlines=True)
break;
else:
print ('Enter y/n')
这就是为什么:
import subprocess
import re
def server_checker():
print ("This will print any service that is stopped or unknown \n")
#servers
server = str(input("Enter server to query(IP Address): "))
server_list = server.split(",")
server_count = len(server_list)
#services
service = str(input("Enter service to query: "))
service_list = service.split(",")
service_count = len(service_list)
#server loop
for a in range(len(server_list)):
server_net_use = 'net use'+r' \\'+server_list[a]+r'\ipc$ /user:Administrator itv'
server_disconnect = 'net use'+r' \\'+server_list[a]+r'\ipc$ /d'
server_sc = r'\\'+server_list[a]
subprocess.check_output(server_net_use, universal_newlines=True)
#service loop
for i in range(len(service_list)):
x = subprocess.check_output(['sc', server_sc, 'query', service_list[i]], universal_newlines=True)
y = re.sub('\s+',' ',x)
if 'FAILED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - Unknown Service!\n')
elif 'STOPPED' in y:
print ('\n'+server_list[a]+' - '+service_list[i]+' - '+y.split(" ")[10]+'\n')
if __name__ == "__main__":
server_checker()
while(True):
answer = str(input("Do you want to query another service? y/n: "))
if answer.lower() in ["yes","y","letsgo"]:
subprocess.check_output(server_disconnect, universal_newlines=True)
print ("\n")
server_checker()
elif answer.lower() in ["no","n,","nowayhosay"]:
subprocess.check_output(server_disconnect, universal_newlines=True)
break;
else:
print ('Enter y/n')
其实很简单。只要尽快定义函数,然后在定义函数后立即调用它
def saysomething(say):
print say
saysomething("Hello, World!")
如果一切顺利,您应该获得:
Hello, World!
如果没有,检查错误。这其实很容易。只要尽快定义函数,然后在定义函数后立即调用它
def saysomething(say):
print say
saysomething("Hello, World!")
如果一切顺利,您应该获得:
Hello, World!
如果没有,请检查错误。这里似乎仍然有大量重复代码。我建议,
repeat()
函数是不必要的,可以省略。此外,在我看来,while
循环不应该在service\u checker()
中(它当前递归调用service\u checker()
),而应该在文件末尾的主程序中。fair point。我想我回答这个直接的问题时被冲昏头脑了,稍后我会整理代码,但我的主要目的是回答这个问题并给出如何正确执行的想法,而不是重写80行代码。@Simon你是100%正确的,甚至没有正确地看代码。谢谢@Noelkd的帮助,我没有注意到if\uuuuu name\uuuuu==“\uuuuu main\uuuuu”:
命令。这在将来也会很有帮助,并且节省了很多代码行。很好@蒂姆:没问题,我的朋友。如果这是正确的答案,你能接受吗?我很确定,如果代码中没有的话,它也能正常工作。如果uuuu name_uuuuu==“uuuuuu main_uuuuu”:
位,您只需要调用该方法,然后进入循环直到退出。祝你将来好运!这里似乎仍然有很多重复的代码。我建议,repeat()
函数是不必要的,可以省略。此外,在我看来,while
循环不应该在service\u checker()
中(它当前递归调用service\u checker()
),而应该在文件末尾的主程序中。fair point。我想我回答这个直接的问题时被冲昏头脑了,稍后我会整理代码,但我的主要目的是回答这个问题并给出如何正确执行的想法,而不是重写80行代码。@Simon你是100%正确的,甚至没有正确地看代码。谢谢@Noelkd的帮助,我没有注意到if\uuuuu name\uuuuu==“\uuuuu main\uuuuu”:
命令。这在将来也会很有帮助,并且节省了很多代码行。很好@蒂姆:没问题,我的朋友。如果这是正确的答案,你能接受吗?我很确定,如果代码中没有的话,它也能正常工作。如果uuuu name_uuuuu==“uuuuuu main_uuuuu”:
位,您只需要调用该方法,然后进入循环直到退出。祝你将来好运!