2016-10-06 3 views
0

cat을 사용하여 파일 내용을 인쇄해야하는 python에서 서브 프로세스 호출을 사용하고 있습니다. 파일 이름은 파이썬 코드 자체에서 생성하는 변수입니다.서브 프로세스에서 cat을 사용하여 파일 내용 인쇄

pid = str(os.getpid()) 
tmp_file_path = "/tmp/" + pid + "/data_to_synnet" 
synnet_output = subprocess.check_output(["cat echo '%s'"%tmp_file_path], shell=True) 

위의 코드는 cat: echo: No such file or directory 말하는 오류가 발생합니다 : 이것은 내 코드입니다.

그러나 subprocess.check_output(["echo '%s'"%tmp_file_path], shell=True) 만 사용하면 변수 이름이 올바르게 인쇄됩니다.

또한이 (cat echo $tmp_file_name) 명령 줄에서 시도하고 작동합니다. 누군가 잘못된 정보를 알려주실 수 있습니까?

+1

'cat'이 echo''라는 파일을 열려고한다. 왜'echo'를 사용하고 있습니까? 커맨드 라인에서'cat echo $ tmp_file_name'을 시도 할 때'cat : echo : No such file or directory'를 얻습니다. 현재 디렉토리에 echo라는 파일이 있어야합니다. – cdarke

답변

2

당신이 원하는 명령은 이것이다 :

그냥 "에코"단어를 제거
"cat '%s'"%tmp_file_path 

.

또는

,

synnet_output = subprocess.check_output(["cat", tmp_file_path], shell=False) 
+0

'echo = 쉘이 내장되어 쉘이 필요 없기 때문에'shell = False'는 유효합니다. 그렇지 않으면'/ bin/echo'가 다르게 사용됩니다. – cdarke

관련 문제