Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import subprocess
  4. import shlex
  5.  
  6. # 문자열 명령어 실행
  7. def subprocess_open(command):
  8. popen = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
  9. (stdoutdata, stderrdata) = popen.communicate()
  10. return stdoutdata, stderrdata
  11.  
  12. # 배치 파일 등 실행
  13. def subprocess_open_when_shell_false(command):
  14. popen = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  15. (stdoutdata, stderrdata) = popen.communicate()
  16. return stdoutdata, stderrdata
  17.  
  18. # 문자열 명령어 실행
  19. # shell 변수를 false 로 줄경우(default가 false) 명령어를 shelx.split() 함수로 프로세스가 인식 가능하게 잘라 주어야 함
  20. def subprocess_open_when_shell_false_with_shelx(command):
  21. popen = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  22. (stdoutdata, stderrdata) = popen.communicate()
  23. return stdoutdata, stderrdata
  24.  
  25. # 커맨드 리스트 처리
  26. # 커맨드 리스트를 이전 처리의 결과(stdout)를 다음 처리의 입력(stdin)으로 입력하여 순차적으로 처리
  27. def subprocess_pipe(cmd_list):
  28. prev_stdin = None
  29. last_p = None
  30.  
  31. for str_cmd in cmd_list:
  32. cmd = str_cmd.split()
  33. last_p = subprocess.Popen(cmd, stdin=prev_stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  34. prev_stdin = last_p.stdout
  35.  
  36. (stdoutdata, stderrdata) = last_p.communicate()
  37. return stdoutdata, stderrdata
  38.  
  39.  
  40. def main():
  41. print subprocess_open('echo "aaa" | wc -l > a.txt')
  42. # 실행결과
  43. # --> ('', '') 파일 a.txt 생성
  44.  
  45. print subprocess_open_when_shell_false("./test.sh")
  46. # test.sh
  47. # #!/bin/bash
  48. # echo "aaa" | wc -l > b.txt
  49. # 실행결과
  50. # --> ('', '') 파일 b.txt 생성
  51.  
  52. print subprocess_open_when_shell_false_with_shelx('echo -n "aaa"')
  53. # 실행결과
  54. # ('aaa', '')
  55.  
  56. print subprocess_open_when_shell_false_with_shelx('echo "aaa" | wc -l')
  57. # 실행결과
  58. # ('aaa | wc -l\n', '')
  59.  
  60. print subprocess_pipe(['echo "aaa"', "wc -l"])
  61. # 실행결과
  62. # ('1\n', '')
  63.  
  64. if __name__ == "__main__":
  65. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement