지금제가 하고 싶은건 A라는 폴더 안에 Book.jpg라는 이미지가 있으면 그걸 가지고 icon.ico라는 아이콘 파일로 변환하고 이 아이콘을 A라는 폴더의 아이콘으로 설정해주는 작업을 파이썬으로 하고 싶어요. 근데 이게 문제가 뭐냐면 icon.ico로 변환하는거까지는 어려울거 없이 되는데, A에 아이콘 설정을 해줘야 하는데, 그걸 위해서는 A라는 폴더안의 desktop.ini파일 안에
[.ShellClassInfo]
IconResource=.\icon.ico,0
위와 같은 코드를 넣어줘야 해요.
근데 문제가 뭐냐면 파이썬에서 파일 입출력으로 이걸 만들어줘도 이게 시스템 파일로 인식이 안되는건지 아이콘 설정이 안되요.
웃긴건 똑같은 내용을 텍스트 파일로 만들고(수작업으로), 이 텍스트 파일의 이름을 desktop.ini로 바꿔주기만 해도 제대로 동작해요.
근데 왜 파이썬으로 하면 제대로 적용이 안되는건지 모르겠네요;;
import os
icon_dir = "[.ShellClassInfo]\n\
IconResource=.\icon.ico,0"
os.system("magick convert book.jpg -resize 256x256 -gravity center -background transparent -extent 256x256 icon.ico")
desktop_file = open("desktop.ini", "wt")
desktop_file.write(icon_dir)
desktop_file.close()
위 코드가 현재 제가 사용하고 있는 코드입니다.
magick이라는 명령어를 실행하는 부분은 외부 프로그램을 이용해서 icon파일을 만들어주는 부분이구요, icon_dir이라는 변수에 들어있는 String이 desktop.ini의 내용으로 들어갈 문자열이예요. 이렇게 해서 만들어진 문자열을 그대로 복붙해서 수동으로 만들면 제대로 동작하는데, 왜 그냥은 안되는지 모르겠네요 ㅠㅠ
니가 수작업으로 만들 때 cp949이고, 파이썬이 만들면 utf8인거 아니냐?
나도 그걸 의심해보긴 했었는데, 그거 때문은 아닌거같은게 수작업으로 만들더래도 첨부터 desktop.ini로 파일 만들고서 거기다 내용 넣으면 적용이 안되고, 텍스트파일로 만들어서 내용 넣은담에 그걸 desktop.ini로 바꿀때 확장자 바꾸면 못쓴다는 경고가 떠야 이게 윈도우가 desktop.ini파일을 인식하는거 같음;;