[파이썬 Example #002] Linux에서 OS 모듈로 프로그램 여러개 실행

2019. 9. 2. 11:13컴퓨터_Com/파이썬 지식_Things to remember

두 가지 다른 방법이 있다. 

 

1. OS 모듈의 'system' 이용하면 linux terminal에서 사용하던 명령어를 쓸 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import os
 
os.system('casmo4e -kw  01_casmo_a0.inp')
os.system('casmo4e -kw  02_casmo_b0.inp')
os.system('casmo4e -kw  03_casmo_b0c.inp')
os.system('casmo4e -kw  04_casmo_b1.inp')
os.system('casmo4e -kw  05_casmo_b1c.inp')
os.system('casmo4e -kw  06_casmo_b2.inp')
os.system('casmo4e -kw  07_casmo_b2c.inp')
os.system('casmo4e -kw  08_casmo_b3.inp')
os.system('casmo4e -kw  09_casmo_b3c.inp')
os.system('casmo4e -kw  10_casmo_c0.inp')
os.system('casmo4e -kw  11_casmo_c1.inp')
os.system('casmo4e -kw  12_casmo_c1c.inp')
os.system('casmo4e -kw  13_casmo_c2.inp')
os.system('casmo4e -kw  14_casmo_c2c.inp')
os.system('casmo4e -kw  15_casmo_c3.inp')
os.system('casmo4e -kw  16_casmo_c3c.inp')
cs

위 방법 대로 하면 input 파일을 다 복사해서 script에 넣어야 하지만 아래 방법대로 하면 실행할 때 파이썬 실행파일 뒤에 하나의 변수로 input 파일을 쓸 수 있다. 

 

2. 두 번째 방법은 파이썬 파일실행시에 실행하고 싶은 입력파일(input_file)을 변수로 받는 것이다.

아래의 script를 보면 input_file이 argv[1]으로 저장되고 run_sim이라는 리스트에 저장되었다가 join method로 합쳐져서 실행된다.

1
2
3
4
5
6
7
8
9
'''Usage
>>> python3 run.py input_file
'''
import os, sys
 
run_sim = ['casmo4e -kw']
run_sim.append(sys.argv[1])
 
os.system(" ".join(run_sim))
cs

 

3. subprocess를 이용해도 됨

출처:http://blog.naver.com/PostView.nhn?blogId=sagala_soske&logNo=221280201722&parentCategoryNo=&categoryNo=118&viewDate=&isShowPopularPosts=true&from=search

 

[Python] subprocess 모듈 ①

1. subporcess 모듈 이란subprocess의 주요한 목적은, 쉘 (Shell)에서 실행된 결과물을, 스크립트로 가져...

blog.naver.com

1
2
3
4
5
6
import subprocess
 
input_file = "simulate_apr_c1_qc"
 
def run_simulate_out(input_file):  # with OUTPUT
    subprocess.check_call(["simulate3 -kw {0}.inp".format(input_file)], shell=True)
cs

 

4. 폴더에 있는 여러 인풋파일을 실행

현재 폴더 안에 있는 모든 인풋파일을 리스트로 만들어서 for loop로 실행하는 방법

1
2
3
4
5
6
7
8
9
10
11
import os
 
all_file_list = os.listdir()  # 현재 폴더의 모든 파일 리스트
inp_file_list = [file for file in all_file_list if file.endswith(".inp")]
print("file_list: {}".format(inp_file_list))
 
for inp_file in inp_file_list:
    run_sim = ['simulate3 -kw']
    run_sim.append(inp_file)
 
    os.system(" ".join(run_sim))
cs