2013-02-08 30 views
5

पृष्ठभूमिएक पायथन स्क्रिप्ट कैसे बनाएं जो लॉगऑफ, शट डाउन और कंप्यूटर को पुनरारंभ कर सकता है?

मैं अपने आप को अजगर को पढ़ाने की प्रक्रिया में हूँ, और मैंने सोचा कि यह "नियंत्रण केंद्र" का एक प्रकार है करने के लिए एक बहुत ही शांत परियोजना होगी जो मैं कर सकता बंद, पुनः आरंभ, और लॉग में मेरे कंप्यूटर से बाहर मैं subprocess मॉड्यूल का भी उपयोग करना चाहता हूं, क्योंकि मैंने सुना है कि आयात ओएस मॉड्यूल पुराना है।

वर्तमान कोड

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

प्रश्न

क्या मैं सच में है पूछ रहा हूँ, वहाँ एक रास्ता के logoff को (उपप्रक्रिया मॉड्यूल का उपयोग करके) और मेरे कंप्यूटर को पुनः आरंभ है?

के तकनीकी विवरण

अजगर 2.7.3

विंडोज 7, 32 बिट

+0

-शायद शायद पुनरारंभ करने के लिए? –

+0

सुझाव के लिए धन्यवाद, लेकिन मैंने कोशिश की और मुद्दा यह है कि कंप्यूटर फ़ाइल को "पुनरारंभ" नहीं ढूंढ सकता है, विकल्प (-f, -s, -t) वास्तव में उस सम्मान में कोई फर्क नहीं पड़ता। – xxmbabanexx

+0

मुझे लगता है कि स्विच '/ f','/s', आदि होना चाहिए – Blender

उत्तर

6

को पुनः आरंभ करने के लिए:

shutdown /r 

लॉग ऑफ करने के लिए:

shutdown /l 

अंतिम कोड ब्लॉक (के रूप में अनुरोध):

प्रवेश करें बंद:

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

पुनः प्रारंभ:

def shutdown(self): 
    import subprocess 
    subprocess.call(["shutdown", "-f", "-r", "-t", "60"]) 
+2

क्या आप अंतिम कोड ब्लॉक जोड़ सकते हैं? – GLHF

+0

अंतिम कोड ब्लॉक क्या है? मुझे समझ में नहीं आता –

+0

@ben_frankly अंतिम कोड ब्लॉक _in python_। – user1712447

2

आप shutdown किसी भी तरह काम करने के लिए नहीं मिल सकता है, तो आप हमेशा से ही कॉल कर सकते हैं वह कार्य जो उपयोगकर्ता पुस्तकालय से बाहर निकलता है। आप ctypes या win32api के माध्यम से ऐसा कर सकता है, लेकिन आप भी सिर्फ यह कर सकते हैं:

subprocess.call(['rundll32', 'user.exe,ExitWindowsExec') 

या आप उच्च स्तर के खोल समारोह है कि प्रारंभ मेनू का उपयोग करता है कह सकते हैं:

subprocess.call(['rundll32', 'shell32.dll,SHExitWindowsEx 2') 

(इन कार्यों पर एमएसडीएन दस्तावेज देखें।)

मुझे लगता है कि यह संभवतः यह करने का सबसे बुरा तरीका है। यदि आप कमांड चलाने के लिए चाहते हैं, तो shutdown चलाएं; यदि आप एपीआई का उपयोग करना चाहते हैं, तो win32api का उपयोग करें। लेकिन अगर आपके पास एक विचित्र रूप से खराब सिस्टम है जहां shutdown /r बस काम नहीं करता है, तो यह एक विकल्प है।

import subprocess 

बंद करने के लिए अपने विंडोज पीसी:

7

सबसे पहले आप के लिए है

subprocess.call(["shutdown", "/s"]) 

अपने विंडोज़

subprocess.call(["shutdown", "/r"]) 

पुनरारंभ करने के लिए पीसी अपने विंडोज पीसी लॉगआउट करने के लिए:

subprocess.call(["shutdown", "/l "]) 

बंद करने के लिए अपने विंडोज पीसी 900s के बाद:

:

subprocess.call(["shutdown", "/r", "/s", "900"]) 

नीचे बंद बंद करने के लिए कोई अच्छा कारण एक अजगर स्क्रिप्ट के साथ अपने पीसी, तुम बस कॉपी-पेस्ट कर रहे थे stackoverflow से कोड न होने के कारण निरस्त करने के लिए

subprocess.call(["shutdown", "/a "]) 

मैंने केवल इन फ़ंक्शन कॉल को पायथन 3.5 में करने का प्रयास किया। सबसे पहले, मुझे नहीं लगता कि यह अजगर 2.7, और दूसरा के बाद बदल गया है: यह 2016 है, इसलिए मुझे लगता है कि आपने इस सवाल से पूछने के बाद ही स्विच कर दिया है।