1. 程式人生 > >python 每日一練之0005題➕os方法簡單學習

python 每日一練之0005題➕os方法簡單學習

前言

自己的程式設計能力太不足了,最近開始每日一練,望大佬勿噴,學習記錄下

正文

第 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