본문 바로가기
컴퓨터/자질구레 팁

탐색기에서 python 파일로 drag & drop 사용

by adnoctum 2011. 1. 10.


   원하는 작업은, 탐색기 내에서, python 스크립트로 처리할 파일을 python script 위로 끌어 놓기(drag & drop)를 했을 때 python script 가 그 파일을 인자로 받아들이도록 하는 것이다. 간단히 테스트 해보면 다음과 같다.





위에 사용된 test.py 는 다음과 같이 system의 argument로 넘어 온 내용을 출력하는 아주 단순한 파일이다.


사실 위 기능은 '그냥' 사용하면 된다. 그런데, 되지 않을 수도 있다. 이 글은 어떻게 이 문제를 해결해 나갔는가, 를 볼 수 있는 글이라고 할 수 있겠다. 나는 원래

w = open('ff.txt', 'w');


로 해서 sys.argv 를 ff.txt 파일에 저장하려 했으나 파일이 만들어지지 않았다. 그래서 곧바로 검색 ㄱㄱㅆ.



아... 구글은 정말 진리다. 첫 번째 검색 결과 페이지에 있는 첫 번째 답변이 걸어 준 링크(Make Python Scripts Droppable in Windows)를 읽어 보면, windows 탐색기의 경우 drop handler로 .py 파일이 등록되지 않은 것 같다고 한다. 그래서 registry 에 키와 값을 직접 적어 넣으면 된다고 한다. 뭐 저런 거 만드는 .reg 파일을 만들고 자시고 하나, 해서 나는 그냥 일단 registry editor [각주:1]를 열고, HKCR\Python.File\shellex\DropHandler 로 찾아 갔다. 그런데, 저 링크 페이지에 있는 것처럼, 아마도 ActiveState 버전으로 python 을 설치하면 이 drop handler 가 자동으로 되는듯 싶고, 나는 그것으로 했는지[각주:2] drop handler로 제대로 등록되어 있었다. 뭐지? 혹시나 해서 python script 가 실행된 경로를 뿌려 봤다.




역시나. 아니나 다를까, '현재 경로'가 system32 로 되어 있었고, 내가 파일을 만들 때 파일 이름만 써 넣었으므로 system32에 ff.txt 가 만들어져야 한다. 그래서 그 곳을 가보았는데, 없다. 흠, 생각난 것은, windows 7 에서는 아마 권한 문제 때문에 안 될 것이라는 것. 쳇, 이젠 윈도우즈에서도 이 권한이 나를 귀찮게 하는데[각주:3], 하여튼 그래서 위처럼 아예 D 에다 파일을 만들었더니 잘 된다. ㅋㅋㅋ

   저런 경우, 만약 '현재 경로'를 인자로 받은 파일이 있는 경로로 바꾸기 위해서는 그냥 다음과 같이 하면 된다.





  1. '실행'에서 regedit 하면 열린다. 함부로 바꾸지 말자. 컴퓨터 안 켜진다. -.-;;; [본문으로]
  2. 오래되나서 기억이 가물가물하다. >.<"" [본문으로]
  3. 리뉵에서 문제가 생기면 일단 권한부터 살펴 봐야 한다는... [본문으로]