파이썬 CMD 결과 값 받는 방법



cmd 결과 값 받는 방법


파이썬에서 os.system 명렁의 결과를 받고 싶을 때가 있을 것이다.

아래는 2.x 기준으로 os.system 의 결과를 받는 방법을 알아 볼 것이다.

일단 예제 부터 보겠다.

아래의 예제를 실행 하면 디스크 사용량을 백분율로 나타낸 결과 값이 출력 될 것이다. 


#! /usr/bin/python

# -*- coding: utf-8 -*-


import os

import sys

import shutil

import commands

from datetime import datetime, timedelta


(exitstatus, outtext) = commands.getstatusoutput('df -k | grep /home/test | awk \'{print $5}\'')


print outtext


예제를 봤으니 중요한 부분 설명을 하도록 하겠다.

import commands  를 import해야 cmd 결과를 받아 올 수 있다.

os.system 대신 commands.getstatusoutput 사용하여 시스템 콜을 한다.

시스템 콜의 결과가 outtext에 담겨지고 해당 값을 출력하면 

unix에서 시스템 콜 한 명령 결과와 일치하게 출력 되는 것을 확인 할 수 있다.

exitstatus는 성공, 실패 값을 담는 것 같은데 해당 내용은 사용을 안하니 넘어가도록 하겠다.

간략하게 사용방법은 다음과 같다.


 import commands

 ([실행 성공 여부 변수],[시스템 콜 결과 받는 변수]) = commands.getstatusoutput( 시스템 콜 명령어 예를 들어 linux/unix 명령어 )


이상으로 파이썬에서 cmd 결과 값을 받는 방법에 대해 알아 보았습니다.

도움이 되셨나요?



반응형

'프로그램 > Python' 카테고리의 다른 글

[Python] 예외처리 try, finally, except pass  (0) 2016.11.28
[Python] 예외 처리, try, except, else  (0) 2016.11.26
[Python] 모듈 #2  (0) 2016.11.13
[Python] 모듈 #1  (0) 2016.11.12
[Python]클래스(3)  (0) 2016.11.02

자바 this 와 super



this?


this를 사용 하여 클래스 내에 맴버 변수나 메소드를 가리킬 수 있다.

다음 예를 보자


package sample;


public class human {

protected int age;

private String name;

private String job;

public void setHumanInfo( int age, String name, String job)

{

this.age = age;

this.name = name;

this.job = job;

}

}


클래스의 맴버 변수 명이 age 인데 setHumanInfo 함수 인자 값 역시 age 이다.

둘다 age 값인데 어떤게 맴버 변수이고 어떤게 인자인지 구분할 길이 없다.

이럴때 쓰이는 것이 this 인데 this를 쓰면 클래스의 맴버 변수를 가리킨다.

또한 this는 맴버 함수도 가리킬 수 있다. 


super?


super를 사용 하여 상위(부모)클래스 내에 맴버 변수나 메소드를 가리킬 수 있다.

이때 상위 클래스의 접근 범위가 public 이나 protected로 되어 있어야 접근이 가능하다.

위에 human 클래스에 age는 protected로 접근 범위가 설정 되어있다.


다음은 human 클래스를 상속한 korean 클래스의 예제이다.


package sample;


public class korean extends human {

int age;

public void setAge(int age){

super.age = 1;

this.age = 2;

System.out.println("super.age : " + super.age );

System.out.println("this.age : " + this.age );

System.out.println("age : " + age );

}

}


[결과]

super.age : 1

this.age : 2

age : 10


korean 클래스는 human을 상속 했기 때문에 

super.age는 human의 맴버 변수

this.age는 korean의 맴버 변수


이로써 this, super에 대한 사용방법에 대해 알아봤습니다.

궁금한 점 있으면 댓글 달아주시면 답변 드리겠습니다.

도움이 되셨나요?



반응형

자바 함수 오버라이딩(Overriding)



함수 오버라이딩(Overriding)란



함수 오버라이딩이란 상속시 부모의 클래스 함수를 재 정의 하는 것을 의미 한다.

오버로딩과 명명이 비슷해 혼동이 될 수 있는데 오버로딩은 똑같은 함수 명에 인자나 리턴값 수나 형식을 달리해서

만드는 것을 뜻한다.


[부모 클래스]

package sample;


public class human {

public void introduce()

{

System.out.println("I`m human");

}

}


[자식 클래스]

package sample;


public class korean extends human {

public void introduce()

{

System.out.println("I`m Korean");

}

}


부모인 human 클래스의 introduce 함수를 자식인 korean 클래스가 상속 받아서 다시 재정의 하고 있다.


[사용 예제]

package sample;


public class sample {

public static void main(String[] args) {

    korean k = new korean();

   human h = new human();

   

   k.introduce();

   h.introduce();

}

}



[결과]

I`m Korean

I`m human


자식 클래스인 korean이 부모 클래스의 함수를 재정의 하여 결과 값이 다르게 출력 되는 것을 확인 할 수 있다.


이상으로 오버라이딩에 대해 설명 드렸습니다.

도움이 되셨나요?



반응형

자바 상속(Inheritance) 사용법



상속(Inheritance)란



클래스에서 상속이란 기존에 만들어 놓은 클래스를 그대로 사용 하기 위해 쓰여진다.

상속 받는 클래스는 부모 클래스의 기능을 모두 사용 할 수 있다.

예제를 통해 이해를 도와 보자 아래와 같이 human 이라는 클래스가 있다.


package sample;


public class human {

private int age;

private String name;

private String job;

public void setHumanInfo( int age, String name, String job)

{

this.age = age;

this.name = name;

this.job = job;

}

public void introduce()

{

System.out.println( "My Name is " + name );

System.out.println( "I`m " + age + " and my job is " + job );

}

}


아래는 human을 상속한 korean 클래스가 있다.


package sample;


public class korean extends human {

}


클래스 상속하는 방법은 extends 키워드를 넣어 주면 된다.

보다시피 korean는 상속만 받았지 아무것도 구현 하지 않았다.

이것을 사용하는 예를 보도록 하겠다.


package sample;


public class sample {

public static void main(String[] args) {

    korean k = new korean();

   human h = new human();

   

   k.setHumanInfo(10, "keke", "tester");

   h.setHumanInfo(20, "hoho", "programer");

   

   k.introduce();

   h.introduce();

}

}


[결과]

My Name is keke

I`m 10 and my job is tester

My Name is hoho

I`m 20 and my job is programer


korean는 구현한 부분이 없는데 human을 상속 받아서 human의 기능을 모두 이용 할 수 있다.

다음에는 상속과 더불어 많이 언급되는 오버라이딩에 대해 설명 하도록 하겠다.



반응형

+ Recent posts