前言
自己的编程能力太不足了,最近开始每日一练,望大佬勿喷,学习记录下
正文
第 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