2013-02-08 4 views
5

背景コンピュータをログオフ、シャットダウン、再起動できるpythonスクリプトを作成するにはどうすればいいですか?

私は自分自身のpythonを教える過程で、現在、と私は「コントロールセンター」のようなものを持っていることは非常にクールなプロジェクトになるだろうと思っている私ができるシャットダウン、再起動、およびログに私のコンピュータのオフ。また、インポートOSモジュールが古くなっていると聞いているので、サブプロセスモジュールを使用したいと思います。

現在のコード

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

質問

私が本当に求めていますが、あるのログオフに(サブプロセスモジュールを使用して)方法があると私のコンピュータを再起動しますか?

技術仕様

のPython 2.7.3

のWindows 7、再起動するには32ビット

+0

-rおそらく再起動しますか? –

+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が何らかの形で仕事を得ることができない場合、あなたは常にだけ呼び出すことができますUSERライブラリから呼び出す関数。 (

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

:あなたはは​​またはwin32api経由でこれを行うことができますが、あなたはまた、単にこれを行うことができます:

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

それとも、スタートメニューを使用して、より高いレベルのシェル関数を呼び出すことができますこれらの関数に関するMSDNのドキュメントを参照してください。)

これはおそらく最悪の方法です。コマンドを実行する場合は、shutdownを実行します。 APIを使用する場合は、win32apiを使用してください。しかし、奇妙なことに、shutdown /rがうまくいかず、システムが奇妙になった場合、それはオプションです。

7

まず、あなたがする必要があります:シャットダウンするには

import subprocess 

お使いのWindows PC:

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

お使いのWindows PCをログアウトするには、WindowsのPC

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

を再起動するには

subprocess.call(["shutdown", "/l "]) 
シャットダウンするには

お使いのWindows PC 900S後:

:PythonスクリプトであなたのPCは、あなただけのコピー・貼り付けたシャットダウンへの正当な理由stackoverflowのからのコードが存在しないため

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

がシャットダウン中止します

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

私はPython 3.5でこれらの関数呼び出しを試みました。まず第一に、私はこれがPython 2.7から変更されたとは思わない.2番目は2016年なので、この質問をしてからスイッチを既に作っていると思う。

関連する問題