基本のpythonプログラミング:Pythonはアプリケーションを起動し、メソッドのアプリケーションを終了

皆のための小さな今日はPythonがアプリケーションを起動し、メソッド、良い基準値のアプリケーションを終了共有するために、我々は手助けをしたいです。是非、ご覧ください、一緒に小さなシリーズに従うこと

  1. 目的

、毎日の仕事オフの時間をいくつかのソフトウェアを起動するために、毎日、仕事の要件、コンピュータのニーズを仕事に行く、あなたはいくつかのソフトウェアをオフにする必要があります。一見開閉が非常に面倒であり、したがって、スクリプトが作成されます。

  1. 環境

システム環境:

  • win7-32​​ビット

  • python 2.7.9

また、pywin32をインストールする必要があります。

ピップpywin32をインストール

  1. スクリプティング

アプリケーションスクリプトを起動します

#coding=utf-8
  
import win32api
#日报软件启动
win32api.ShellExecute(0, 'open', r'C:\Program Files\Pudding\Pudding.exe', '','',1)
  
#OA启动
win32api.ShellExecute(0, 'open', r'C:\Program Files\Tongda\ispirit\ispiritPro.exe', '','',1)
  
#QQ启动
win32api.ShellExecute(0, 'open', r'D:\QQ\Bin\QQ.exe', '','',1)
  
#......
#当然你还可以添加很多你需要启动的软件

アプリケーションスクリプトを終了

#coding=utf-8
  
import os
  
#终止QQ软件
os.system("taskkill /F /IM QQ.exe")
  
#终止日报订餐软件
os.system("taskkill /F /IM Pudding.exe")
  
#终止OA软件
os.system("taskkill /F /IM ispiritPro.exe")
  
#......
#当然你还可以添加很多你需要终止的软件
  1. 生産exeファイル

最後に、EXEファイルの中に作られたこれら2つのスクリプトは、テーブルの上に、それぞれの時間は、それが使いやすいです。

Pythonのコール・システム・コマンド、コマンドラインを実行します

Pythonのコールシステムコマンドの方法は、より多くの持っている、OS /コマンド/サブプロセス・モジュールは、実行する方法があります

他の言語(家主使用される言語の多くではない)と比較すると:

PHPます。exec()、system()は、全体的な感じはない良い使用、閉塞難しい課題であります

Javaの:モジュール関数は、関数はPythonのサブプロセスに非常によく似ていると言うことではない、非常に強力です

(1)os.system

唯一の子機の操作システムコマンドが、情報返信コマンドを取得できません

(2)os.popen

この方法は、実行コマンドを返し、情報オブジェクトを実行するだけでなく

(3)モジュールモジュールのコマンド

一般に使用される2つの方法があります。getoutputとgetstatusoutput

(4)サブプロセスモジュールを使用して

最終的な分析サブプロセスで最も強力な、機能の多くを達成することができます:

例えば、プロジェクトが最近高くなり、呼び出したプロセスがブロックされていないが、また、インタラクティブ、見つかったサブプロセスを満たすことができる必要がコール情報、コールの監視プロセス、タイムアウトが終了し、Pythonのシェルコマンドで呼び出すが、また、取得する必要性が発生しました

使用方法(例えばファイル変換):

time_start = time.time()
cmd = "pdf2htmlEX --no-drm 1 --embed-css 0 --embed-image 0 --embed-font 0 --split-pages 1 --fit-width 748 --css-filename html.css --dest-dir %s --embed-external-font 0 --auto-hint 1 %s" % (html_output_folder, src_file)
  cmd_list = cmd.split(" ")
  sub2 = subprocess.Popen(cmd_list)
  i = 0
  while 1:
    ret1 = subprocess.Popen.poll(sub2)
    if ret1 == 0:
      time_end = time.time()
      time_take = int(time_end - time_start + 0.5)
      with global_value_lock:
        success_ids[param[2]] = time_take
      print sub2.pid,'end'
      break
    elif ret1 is None:
      print sub2.pid, 'running'
      if i >= max_check_time:
        time_end = time.time()
        time_take = int(time_end - time_start + 0.5)
        with global_value_lock:
          timeout_ids[param[2]] = time_take
        sub2.kill()
        log_insert("%s%s%s" % (log_dir(output_folder), os.sep, "convert_log.txt"), src_file, "Timeout_Error", 'None')
        print "*****************Timeout_Error*****************"
        break
      time.sleep(check_time)
    else:
      time_end = time.time()
      time_take = int(time_end - time_start + 0.5)
      with global_value_lock:
        converterror_ids[param[2]] = time_take
      log_insert("%s%s%s" % (log_dir(output_folder), os.sep, "convert_log.txt"), src_file, "Process_Term_Error", str(ret1))
      print sub2.pid,'term', ret1, ret1
      break
    i += 1

注:私たちは直接CMDおよびcmd_listない使用する場合、pidはプロセスからPDF2HTMLされていない得るが、その親、覚えて覚えています

ここではpopenのいくつかの基本的な使い方です

次のようにコンストラクタをPOPEN:

subprocess.Popen(引数、BUFSIZE = 0、実行=なし、STDIN =なし、STDOUT =なし、標準エラー=なし、preexec_fnに=なし、close_fds = Falseに、シェル= Falseを、CWD =なし、ENV =なし、universal_newlines = Falseを、 STARTUPINFO =なし、creationflags = 0)

(:リスト、タプルなど)、および指定されたプロセスパラメータの実行可能ファイル引数パラメータは、文字列または配列の型であってもよいです。型は、配列、実行可能ファイルのパスの通常最初の要素である場合。我々はまた、明示的に実行ファイルのパスを指定するexecuteableパラメータを使用することができます。Windowsオペレーティングシステムでは、popenのは、CreateProcess関数を呼び出すことによって作成された()引数は、配列型の場合、子プロセスは、CreateProcessを文字列型配列に変換するために、システム意志list2cmdlineによって()関数を文字列パラメータを取ります。

パラメータは、bufsizeは:バッファを指定します。私はまだ、パラメータの意味の特定を知って指しているすべての主要な家畜を期待しないでください。

パラメータは、実行可能プログラムの実行可能ファイルを指定します。私たちは、通常の状況下で、引数のパラメータを介して実行するプログラムを設定します。シェルパラメータがTrueに設定されている場合は、実行可能プログラムが使用するシェルを指定します。Windowsプラットフォームでは、デフォルトのシェルはCOMSPEC環境変数で指定されています。

パラメータの標準入力、標準出力、標準エラー出力、標準入力、出力、エラーハンドラのプログラムを表します。彼らは、親プロセスから継承された表現もNoneに設定することができPIPE、ファイルディスクリプタかファイルオブジェクトとすることができます。

preexec_fnにパラメータのみUNIXプラットフォームで有効な、実行可能なオブジェクト(呼び出し可能オブジェクト)を指定するために使用され、それが子プロセスの実行前に呼び出されます。

パラメータClose_sfs:Windowsプラットフォーム、close_fdsの子プロセスがTrueに設定されている場合、新しく作成されたが、親の入力、出力、エラーパイプラインを継承しません。私たちは、子プロセス、出力およびエラー(標準入力、標準出力、標準エラー出力)しながら、真の標準入力のリダイレクトにセットをclose_fdsすることはできません。

シェルパラメータがtrueに設定されている場合、プログラムはシェルを介して実行されます。

CWDパラメータは、子プロセスのカレントディレクトリを設定するために使用されます。

ENVパラメータタイプは、環境変数の指定子プロセスのための辞書です。ENV =なし、環境変数の子プロセスは親プロセスから継承された場合。

パラメータUniversal_newlines:異なるオペレーティングシステム、改行、テキストは同じではありません。例えば:Linuxは '/ n' を使用しながら、 '/ R / N' で表されるウィンドウを変更します。あなたはこれらの改行統一真、Pythonのこのパラメータを設定した場合「/ N」に対処します。

メインウィンドウの外観の優先順位、プロセスなど:STARTUPINFO createionflagsパラメータのみ有効なウィンドウでは、彼らが、根底にあるのCreateProcess()関数にのような子プロセスのために設定された属性の一部を渡されます。

subprocess.PIPE

あなたがオブジェクトpopenのを作成すると、subprocess.PIPEは標準入力、標準出力や標準エラー出力パラメータを初期化することができます。これは、標準のサブプロセスの通信フローを表します。

subprocess.STDOUT

オブジェクトを作成する場合のpopenは、stderrの初期化パラメータの標準出力ストリームによってエラーを示します。

popenの方法:

Popen.poll()

子プロセスが終了したかどうかをチェックします。設定とリターンリターンコードプロパティ。

Popen.wait()

子プロセスが終了するのを待ちます。設定とリターンリターンコードプロパティ。

Popen.communicate(入力=なし)

子供と対話します。標準入力、標準出力にデータを送信してから、またはstderrにデータを読み込みます。オプションのパラメータは、子プロセスに送信された入力パラメータを指定します。(stdoutdata、stderrdata):()通信は、タプルを返します。注:データを送信する場合はpopenのは、オブジェクトを作成するときに、パラメータがプロセスを通じて標準入力PIPEを標準入力に設定する必要があります。あなたが取得したい場合は同様に、stdoutとstderr、stdoutとstderrからのデータは、PIPEに設定する必要があります。

Popen.send_signal(信号)

子プロセスにシグナルを送信します。

Popen.terminate()

ストップ(ストップ)子プロセス。WindowsのAPIのTerminateProcessを呼び出し、Windowsプラットフォームでは、()子プロセスを終了します。

Popen.kill()

子プロセスを強制終了します。

Popen.stdin

あなたはpopenのを作成している場合は標準入力パラメータがPIPEに設定されているオブジェクト、Popen.stdinは、コマンドを送信するために子プロセスを作成するためのファイルオブジェクトを返します。それ以外の場合はNoneを返します。

Popen.stdout

あなたが作成しているpopenのは、そのパラメータが標準出力PIPEに設定されているオブジェクトの場合は、Popen.stdoutは、コマンドを送信するために子プロセスを作成するためのファイルオブジェクトを返します。それ以外の場合はNoneを返します。

Popen.stderr

あなたが作成しているpopenのは、そのパラメータが標準出力PIPEに設定されているオブジェクトの場合は、Popen.stdoutは、コマンドを送信するために子プロセスを作成するためのファイルオブジェクトを返します。それ以外の場合はNoneを返します。

Popen.pid

子プロセスのIDを取得します。

Popen.returncode

戻り値を取得するプロセス。プロセスが終わっていない場合は、Noneを返します。
最後に、我々は非常に広いPythonの学習リソースの収集をお勧めします、[入力する]をクリック]、ここでのビジネス経験の可能性がある、経験、研究ノートを学ぶ前に、私のコレクションであり、プロジェクトの戦闘への情報に基づいてゼロに沈静化、我々は一番下に、メッセージを残し、前方に置くことを知らないことができ、我々は進歩を一緒に勉強します

公開された15元の記事 ウォンの賞賛2 ビュー10000 +

おすすめ

転載: blog.csdn.net/haoxun11/article/details/104908056