LoginSignup
2
1

More than 5 years have passed since last update.

subprocess.runの出力結果を英語にする方法

Posted at

Pythonで以下のようにifconfigコマンドを実行し、結果を取得したい。
(subprocess.runはPython3.5で追加)

import subprocess

command = "ifconfig"

p = subprocess.run(command,
                   stdout=subprocess.PIPE,
                   stderr=subprocess.PIPE,
                   shell=True
                   )
print(p.stdout.decode("utf-8", "ignore"))
実行結果
eth0      Link encap:イーサネット  ハードウェアアドレス 00:0c:9f:aa:bb:cc
          inetアドレス:192.168.5.22 ブロードキャスト:192.168.5.255  マスク:255.2
55.255.0
          inet6アドレス: fe80::63b7:c654:77c9:b843/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:29114 エラー:0 損失:5944 オーバラン:0 フレーム:0
          TXパケット:6015 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:1945895 (1.8 MiB)  TXバイト:856735 (836.6 KiB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:192 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:192 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1
          RXバイト:32042 (31.2 KiB)  TXバイト:32042 (31.2 KiB)

wlan0     Link encap:イーサネット  ハードウェアアドレス 00:0c:9f:aa:bb:cd
          UP BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

日本語で出力されると非常に処理しづらいので、英語で出力してほしい。
以下のようにenv引数を指定してやると良い。

import subprocess

command = "ifconfig"
_env = {'LANG':'C'}

p = subprocess.run(command,
                   stdout=subprocess.PIPE,
                   stderr=subprocess.PIPE,
                   env=_env,
                   shell=True
                   )
print(p.stdout.decode("ascii"))
実行結果
eth0      Link encap:Ethernet  HWaddr 00:0c:9f:aa:bb:cc
          inet addr:192.168.5.22  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::63b7:c654:77c9:b843/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:29928 errors:0 dropped:6055 overruns:0 frame:0
          TX packets:6137 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2006983 (1.9 MiB)  TX bytes:874819 (854.3 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:192 errors:0 dropped:0 overruns:0 frame:0
          TX packets:192 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:32042 (31.2 KiB)  TX bytes:32042 (31.2 KiB)

wlan0     Link encap:Ethernet  HWaddr 00:0c:9f:aa:bb:cd
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1