# !/usr/bin/python3.4
创新互联建站自2013年创立以来,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元纳雍做网站,已为上家服务,为纳雍各地企业和个人服务,联系电话:028-86922220
# -*- coding: utf-8 -*-
import os
# 找出文件夹下所有.xml后缀的文件
def listfiles(rootdir, prefix='.xml'):
file = []
for parent, dirnames, filenames in os.walk(rootdir):
if parent == rootdir:
for filename in filenames:
if filename.endswith(prefix):
file.append(filename)
return file
else:
pass
# 替换名字
def replacename(formername, aftername):
os.rename(formername, aftername)
if __name__ == "__main__":
# 读取文本信息
file = open("../txt/info.txt", "r")
# 以空格分隔,返回数组['1', '张三', '1234', '北京', '2', '李四', '5678', '天津']
infos = file.read().split(" ")
file.close()
# 照片的存放位置
phopath = "../pho"
# 输出照片的名字['../pho/5678.jpg']
# 只有5678的照片,没有1234的
phonames = listfiles(phopath, "jpg")
# 得到照片的身份证号
phonums = []
for item in phonames:
phonums.append(item.replace(".jpg", ""))
# 判断是否存在相应的身份证,如果存在就替换成名字
for i in range(0, int(len(infos) / 4)):
# 出现身份证号码的步长
step = 2 + i * 4
for j in range(0, len(phonums)):
# 如果身份证匹配就替换
if infos[step] == phonums[j]:
replacename(phopath + "/" + phonames[j], phopath + "/" + infos[step - 1] + ".jpg")
pho文件夹:
txt文件夹:
txt文本信息:
1 张三 1234 北京 2 李四 5678 天津
文件夹位置:
--py(存放代码)
--txt(存放txt)
--pho(存放张片)
Python2.0与Python3.0主要区别在于以下几个方面:
1、输出
Python2.0使用print关键字进行输出,比如:print “Hello”;
Python3.0使用print()函数,比如print("Hello")。
2、输入方面
Python2.0使用raw_input()函数,比如:name=raw_input("请输入你的名字:");
Python3.0使用input()函数,比如:name=input("请输入你的名字:")。
3、字符串的编码格式
Python2.0默认采用ASCII编码对输入的字符串进行编码;
而Python3.0默认采用Unicode编码对字符串进行编码。
4、格式化字符串的方式
Python2.0用%占位符进行标准化格式输出字符串,比如:“Hello,%s" % ("World");
Python3.0用format()函数,比如:”Hello,{}“.format("World")。
5、源文件的编码格式
Python2.0默认采用ASCII,因此使用中文时要在源文件开头加上一行注释:# -- coding: utf-8 --;
Python3.0默认采用utf-8。
isinstance 的用法:
语法:
isinstance(object, classinfo)
其中,object 是变量,classinfo 是类型即 (tuple,dict,int,float,list,bool等) 和 class类
若参数 object 是 classinfo 类的实例,或者 object 是 classinfo 类的子类的一个实例, 返回 True。
若 object 不是一个给定类型的的对象, 则返回结果总是False。
若 classinfo 不是一种数据类型或者由数据类型构成的元组,将引发一个 TypeError 异常。
例如:
isinstance(3, int)
True
isinstance(3.5, float)
True
isinstance(123,str)
False
isinstance('adf',(str,float,int))
True
class myClass:
pass
test = myClass()
isinstance(test, myClass)
True12345678910111213141516171234567891011121314151617
type()与isinstance()的区别:
共同点:两者都可以判断对象类型
不同点:对于一个 class 类的子类对象类型判断,type就不行了,而 isinstance 可以。
例如:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False1234567891012345678910
综上,推荐使用 isinstance 判断对象类型。