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

猜你喜欢

转载自blog.csdn.net/w12315q/article/details/80718182
今日推荐