开发者社区> 问答> 正文

用Python校验身份证号码真伪:报错

我是初学者,我们学校今年开的这门课,这是留的作业;

我将代码写完了,但是在读文件的时候,不知道什么原因总报错

我的代码如下:

#-*- coding: UTF-8 -*-
import random

yushu=[x for x in range(0,11)] 
ma=['1','0','X','9','8','7','6','5','4','3','2','1']

def yanzheng(nid):

	dicma=dict(zip(yushu,ma))

	sum=0

	for x,y in enumerate(nid[:-1]):

		sum+=((2**(18-x-1))%11)*int(y) #17位对应系数相乘的和

	if nid[-1]==dicma[sum%11]: #校验码对照
		return '%s True'%nid
	else:
		return '%s False'%nid
def readfile(fname):
	f=open('id.txt','rb')
	for line in f.readlines():
		print  yanzheng(line.strip())
	f.close()
def randnum():
	idstr=''
	for i in range(17): #前17位随机
		idstr+=str(random.randint(0,9))

	idstr+=random.choice(ma) #最后一位从列表种随意一个,因为有X
	return idstr


if __name__=="__main__":
	nid=raw_input('Please enter your ID: ') #用户输入ID,没做任何验证
	print yanzheng(nid)  #验证身份证
	readfile('id.txt')   #从文件读出来再验证
	print yanzheng(randnum())  #随机一个在验证



错误情况如下:

但是我已经把文件都放到一个文件夹里啦,而且文件里边也有内容

请问读取文件那个部分的代码怎么改好(我不要指定那个盘,那个路径,直接在同一文件夹读取)

展开
收起
kun坤 2020-06-08 11:01:05 585 0
1 条回答
写回答
取消 提交回答
  • import os
    
    readfile('%s/id.txt' % os.path.split(os.path.realpath(__file__))[0])



    2020-06-08 15:09:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载