문자열 인수를 허용하는 Python 스크립트가 있습니다.
$ python script.py "one image.jpg" "another image.jpg"
이것은 예상대로 작동합니다.
파이썬 인수 : ["one image.jpg", "another image.jpg"]
파일 이름을 전달해야하는 경우
$ python script.py $(ls "/some/dir/*.jpg")
파이썬 인수 : ["one", "image.jpg", "another", "image.jpg"]
-Q
of ls
명령을 사용하면 큰 따옴표로 결과를 묶을 수 있습니다. 그러나 따옴표는 Python 스크립트에서 이스케이프 상태로 유지됩니다.
$ python script.py $(ls -Q "/some/dir/*.jpg")
파이썬 인수 : ['"one image.jpg"', '"another image.jpg"']
ls
인수로 사용할 파일 이름을 적절한 문자열로 어떻게 확장해야 합니까? (첫 번째 예에서와 같이)
답변
파싱하지 마십시오 ls
. 그냥 사용하십시오 :
python script.py /path/to/*.jpg
이것은 /path/to/*.jpg
적절한 목록으로 대체 되는 쉘 글 로빙을 수행 합니다.
답변
나는 위의 글로브의 대답은 최고라고 생각하지만, xargs
그리고 find
때로는 사용할 수있는 솔루션도있다.
find /some/dir/ -name '*.jpg' -print0 | xargs -0 python script.py
이 때문에 작업 -print0
에 find
널 (null)로 출력을 분리한다 오히려 공백 바이트 이하와 -0
xargs 커맨드의 입력을 가정한다 라인 널 바이트로 분리되는 명령.