Python_반드시 매일 벽지 교체(Python 2.7)

6337 단어 python
Python_반드시 매일 벽지 교체(Python 2.7)
하루 에 한 장의 벽 지 를 바 꿔 야 하기 때문에 매일 한 장의 벽 지 를 내 려 받 아 바 꾸 기로 했다.
이미 완벽 하 게 변경 벽지
환경:
  • 지난번 에 사 용 했 던 python 3
  • 이번 에는 python 2.7+Image+urllib 2+pywin 32
  • 를 사용 합 니 다.
    난점:
  • 가끔 인 코딩 오류 가 발생 할 수 있 습 니 다.py 파일 의 첫 줄 에 다음 말 을 더 해 야 합 니 다
  • # This Python file uses the following encoding: utf-8
    ...
  • urllib 의 사용
  • python 2.7 과 python 3 의 urllib 사용 과 가 져 오 는 방식 이 다 릅 니 다.
    #python3
    import urllib.request
    #     
    def connect_Net(strUrl) :
        request = urllib.request.Request(strUrl)
        response = urllib.request.urlopen(request)
        data = response.read()
        return data
    
    #python2.7
    import urllib2
    #        
    def connect_Net(strUrl) :
        response = urllib2.urlopen(strUrl)
        data = response.read()
        return data
  • Image 의 설치(√)
  • python 3 과 python 2.7 이 모듈 을 가 져 오 는 방법 이 다 릅 니 다.
    #Image  
    pip install pillow
    #python3
    import Image
    #python2.7
    from PIL import Image
  • win32gui 의 설치(√)
  • win32gui 는 pywin 에서 그 때 는 몰 랐 기 때문에 오래 찾 았 습 니 다.
    pywin 32 에서 해당 버 전 을 찾 아 다운로드 한 후 직접 설치 하면 됩 니 다.
    주의:pip install win32gui설치 방식 이 잘못 되 었 습 니 다.
    다음 내용 은 이전에 python 3 로 쓴 절차 와 차이 가 많 지 않 습 니 다.자세 한 내용 은 Python 을 볼 수 있 습 니 다.반드시 매일 벽지 교체
  • 주의
  • 정규 표현 식 의 url 주 소 는
  • url: "/az/hprichbg/rb/HallstattAustria_ZH-CN10534000934_1920x1080.jpg"url:"...jpg"와 빈 칸 이 있 기 때문에 정규 를 쓸 때 주의해 야 합 니 다patternImg = r'url: "(.*jpg)"'전체 코드:
    # This Python file uses the following encoding: utf-8
    import urllib2
    import re
    from PIL import Image
    import win32gui
    import win32con
    import win32api
    
    #        
    def connect_Net(strUrl) :
        response = urllib2.urlopen(strUrl)
        data = response.read()
        return data
    
    # :url(/az/hprichbg/rb/LaGrandeNomade_ZH-CN10098798714_1920x1080.jpg)
    #   URL
    def get_DailyPicUrl(data) :
        patternImg = r'url: "(.*jpg)"'
        picUrl = re.findall(patternImg, data);
        return picUrl[0];
    
    
    #http://cn.bing.com/az/hprichbg/rb/GreatSaltLake_ZH-CN12553220159_1920x1080.jpg
    def download_DailyPic(picUrl) :
        #   
        picUrl = 'http://cn.bing.com' + picUrl
        picData = connect_Net(picUrl)
        #     
        picList = str(picUrl).split('/')
        picName = picList[len(picList) - 1]
        #      
        with open(picName, 'wb') as f:
            f.write(picData)
    
        return picName
    
    StoreFolder = "D:\\Learn\\Python\\wallpaper"
    
    #            
    def setWallPaper(imagePath):
        bmpImage = Image.open(imagePath)
        newPath = StoreFolder + "\\" +imagePath
        bmpImage.save(newPath, "BMP")
        setWallpaperFromBMP(newPath)
    
    
    def setWallpaperFromBMP(imagepath):
        print imagepath
        k = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
        win32api.RegSetValueEx(k, "WallpaperStyle", 0, win32con.REG_SZ, "2") 
        win32api.RegSetValueEx(k, "TileWallpaper", 0, win32con.REG_SZ, "0")
        win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,imagepath, 1+2)
    
    
    if __name__ == '__main__' :
        data = connect_Net('http://cn.bing.com/?mkt=zh-CN')
        picUrl = get_DailyPicUrl(data.decode('utf-8'))
        picName = download_DailyPic(picUrl)
        setWallPaper(picName)
    
    

    좋은 웹페이지 즐겨찾기