今天写了一个能指定图片尺寸,以及比例 来搜索分类图片的Python脚本。为了读取多个格式的文件的头,采用了Python PIL库。

im = PIL.Image.open(imPath)
if im的属性满足条件:
os.move(imPath,newPath)

出现了文件被占用的错误。查看PIL的Image模块的文档,发现没有close方法。但是它却占用了文件。这实在是蛋疼。

解决方案如下:

imFp = open(imPath,"rb")
im = PIL.Image.open(imFP)
if im的属性满足条件:
imFp.close()
os.move(imPath,newPath)
else:
imFp.close()

另外给出这个脚本的代码:

import os;
import os.path;
import PIL.Image as Image;
import shutil
import sys
reload(sys)
sys.setdefaultencoding('gb18030')
wkPath = os.getcwd()
allImagesNames = \
[imPath for imPath in os.listdir(wkPath) \
if (os.path.isfileth+os.sep+imPath) and \
(os.path.splitext(imPath)[1].lower() in [".jpg",".jpeg",".tiff",".png",".gif",".bmp"]))]
minAspect = 0.0
maxAspect = 200.0
minWidth = 0
maxWidth = 1000
minHeight = 0
maxHeight = 1000 outDir = "Aspect_from"+("%.2f" %minAspect)+"to"+("%.2f" %maxAspect)\
+"Dim from"+str(minWidth)+"x"+str(minHeight)+" to "+str(maxWidth)+"x"+str(maxHeight)
for imName in allImagesNames:
fp = open(wkPath+os.sep+imName,"rb")
print imName
im = Image.open(fp)
w = im.size[0]
h = im.size[1]
aspect = float(w)/h fp.close()
if aspect<=(maxAspect+0.02) and aspect>=(minAspect-0.02) and w<=maxWidth and w>=minWidth and h<=maxHeight and h>=minHeight:
if not os.path.exists(wkPath+os.sep+outDir):
os.mkdir(wkPath+os.sep+outDir)
shutil.move(wkPath+os.sep+imName,wkPath+os.sep+outDir)
#print "success"
else:
pass

PIL不能关闭文件的解决方案的更多相关文章

  1. 在visual studio中设置点击左边选项卡中的类文件,右侧解决方案跳到对应的文件

    在visual studio中如何设置点击左边选项卡中的类文件,右侧解决方案跳到对应的文件?比如说,VS上方的选项卡文件较多,我点击选项卡上的任一文件,解决方案中对应的文件突出显示           ...

  2. Oracle 控制文件损坏解决方案

    Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...

  3. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  4. python中关闭文件

    1.关闭文件,通过f.write把内容写入文件会覆盖之前文件中的内容

  5. open(),close() 打开/关闭文件

    Open open()是一个系统调用函数,用来打开或创建一个文件,通过不同的oflag选项实现不同功能. 使用时open()函数需要包含的头文件:<sys/types.h>,<sys ...

  6. VS2015如何另存解决方案文件-修改解决方案sln文件的路径

    原文:VS2005如何另存解决方案文件-修改解决方案sln文件的路径 修改解决方案sln文件的路径 方法一:工具→选项→项目和解决方案,可设置项目的默认保存位置.方法二:"解决方案资源管理器 ...

  7. 关于在同一母版页中使用多个CSS文件的解决方案

    原文:关于在同一母版页中使用多个CSS文件的解决方案 以前都用.NET1.1没遇到这问题,现在换了2.0开始学着使用母版,结果就遇到了这个问题,在百度上一搜索才发现有不少人提出这个问题,但没找到好的解 ...

  8. PHP怎么打开或者关闭文件?

    什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...

  9. [Python] python3 文件操作:从键盘输入、打开关闭文件、读取写入文件、重命名与删除文件等

    1.从键盘输入 Python 2有两个内置的函数用于从标准输入读取数据,默认情况下来自键盘.这两个函数分别是:input()和raw_input(). Python 3中,不建议使用raw_input ...

随机推荐

  1. 置换贴图 Displacement Mapping

    视差贴图和法线贴图都是使用特定的手段来达到欺骗视觉的目的,让人以为物体的表面是凹凸起伏的.而置换贴图却是真的将模型的顶点进行偏移,在原本的平面上创造出凹凸的效果.既然是对顶点进行偏移,那么就需要模型有 ...

  2. FlashBuilder的快捷键

    Ctrl-F11: 执行(Run) F11: 除错(Debug) Ctrl-Alt-Down: 重复目前所在编辑列(Repeat current line ) Alt-Up: 移动本列,或选择列往上移 ...

  3. Flex 三态复选框

    在周末挤出了一点时间,写了一个三态复选框的组件,单独使用没有价值,不过集成到树之中可以很好的实现三态树,今天上午便把三态树组件也完成了,Flex自定义组件基本无所不能,此组件基于最新的Flex4.6( ...

  4. ORA-12518,TNS:listener could not hand off client connection

    前几天在启动应用的时候,在控制台抛出了此异常信息!很明显是数据库方面的问题,不过具体是什么问题哪?百度了一下,网上关于此问题的信息还是有比较多,从异常的提示中我们也能看到是具体是和客户端的连接相关的问 ...

  5. 学习资料 数据查询语言DQL

    数据查询语言DQL介绍及其应用: 查询是SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句.用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句,它提供 ...

  6. 华为OJ平台——整形数组合并

    题目描述: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 输入: 输入说明,按下列顺序输入: 1 输入第一个数组的个数 2 输入第一个数组的数值 3 输入第二个数组的个数 4 输入第二个数组的数 ...

  7. ButterKnife的简单使用

    刚刚学习Android,也不知道算不算已经入门!但是总感觉自己没有什么提高,所以就把一些学习内容写一遍下来. 今天接触了ButterKnife这个第三方框架 GitHub地址:https://gith ...

  8. WWF3控制流程类型活动<第二篇>

    一.顺序工作流 顺序活动是WWF工作流中最基本.最简单的容器类型的活动.顺序活动可以作为很多其他活动的分支. 代码: private void CodeExecute1(object sender, ...

  9. 将Eclipse项目导入Android Studio出现中文乱码的问题

    以前一直以Eclipse开发项目,最近正在研究Android Studio的使用,首先想到到的是将Eclispe项目导入AS. 可以方便查看以前写过的代码,然后出现了中文乱码的问题,通过搜索了一些资料 ...

  10. Solaris桌面CDE

    /usr/dt/bin:应用程序/usr/dt/lib:运行时共享库/usr/dt/config:默认系统配置文件/usr/dt/man:手册页/usr/dt/app-defaults:默认应用程序资 ...