2012-03-28 2 views
1

파이썬에서 ls -l으로 파일의 최종 수정 날짜를 확인하려고합니다.Python long listing directory (ls -l), ls *

os.listdir에는 긴 목록 형식이 표시되지 않습니다. subprocess.call은 형식을 표시하지만 실제로 인쇄하고 0을 반환합니다. 변수에 넣을 수 있기를 원합니다. 어떤 아이디어?

또한, 나는

ls: cannot access *.py: No such file or directory 

shell=True와 함께 작동하지만, 그것 없이는 작동하지 않는 이유 누군가가 설명 할 수 있다면, 내가 감사 할 것 응답

subprocess.call("ls","*.py") 

을 시도했다. 어떻게 작동시키는 지 안다면 더 나아질 것입니다.

+7

왜 'os.path.getmtime()'을 사용하는 것보다 세상을 왜곡시킬 수 있습니까? – kindall

답변

2

* 쉘 확장 문자이기 때문에 그것은 shell=True없이 작동하지 않습니다 - .py로 끝나는 파일 목록에 *.py에서가는 쉘 자체가 아닌 ls 또는 python에 의해 수행하는 기능입니다.

subprocess을 통해 호출 된 명령의 출력을 얻으려면 subprocess.check_output() 또는 subprocess.Popen을 사용해야합니다.

ls_output = subprocess.check_output(['ls', '-l']) 
+3

물론, 더 좋은 방법은'ls'를 전혀 호출하지 않고'os.listdir()'과'os.stat()'(또는'os.path'의 유틸리티 함수와' glob 모듈.) –

+1

동의합니다. 그러나이 질문은 구체적으로 하위 프로세스에 관한 것이므로 질문에 대해 다른 사람에게 대답해야한다고 생각합니다. – Amber

+0

물론, 일을하는 실제적인 올바른 방법을 추천하는 것은 OP와 같은 일을하려고하는 모든 사람에게 더 도움이됩니다. –