python 每日一練之0005題➕os方法簡單學習
阿新 • • 發佈:2018-11-09
前言
自己的程式設計能力太不足了,最近開始每日一練,望大佬勿噴,學習記錄下
正文
第 0005 題: 你有一個目錄,裝了很多照片,把它們的尺寸變成都不大於 iPhone5 解析度的大小。
這是題目,這裡我用到的是PIL和os模組中的一些功能
貼出程式碼
#! usr/local/bin/python3.6 #-*- coding: utf-8 -*- import os from PIL import Image imagePath = '/Users/chenminghang/Desktop/python practise/text/in' imageout = '/Users/chenminghang/Desktop/python practise/text/out' def change(imagePath,imageout,imagetype,imagename): imagetype = 'jpeg' if imagetype == '.jpg' else '.png' #將檔案的字尾名換一下 im = Image.open(imagePath+'/'+imagename) #這裡曾經有一個坑沒有➕‘/’這個所以讓我除錯了好久千萬不能忘啦 rate = max(im.size[0] / 640.0 if im.size[0] > 640 else 0 ,im.size[1] /1136.0 if im.size[1] >1136 else 0) if rate : im.size[0] = im.size[0] / rate im.size[1] = im.size[1] / rate #額數學原理 im.save(imageout+'/'+imagename,imagetype) #我在上一篇中說了這個方法的使用 if __name__ == '__main__': tx = '' os.chdir(imagePath) #切換到當前的地址 for i in range(1,len(os.listdir(os.getcwd()))): #知道了python的for迴圈中如果物件是int類一定要加上range print os.listdir(os.getcwd())#我就單純的想看下目錄。。怕輸入不對 if i < len(os.listdir(os.getcwd())): tx = os.path.splitext(os.listdir(os.getcwd())[i])[1]#這裡我用I計數也是有原因的因為在Mac中一直有一個隱藏檔案這個坎沒過去就換了個方法,如果你們想要簡單一點迴圈可以寫 for i in os.listdir(os.getcwd) if tx == '.jpg' or '.png': change(imagePath,imageout,tx,os.listdir(os.getcwd())[i])
拓展
一些關於os模組的使用拓展
os.chdir(path) 將目錄切換到指定的path目錄
os.listdir(path) 將當前檔名和檔案中包括的目錄放在列表中
os.path.splitext('good.txt'). 這個舉個例子 輸出 ['good','.txt']
os.getcwd() 獲取當前工作目錄
總結
總結一下
其中os模組的使用非常重要,我也是隻是淺淺的列裡還有好多
題目來源:https://github.com/Yixiaohan/show-me-the-code