如何在文件

时间:2017-02-16 13:40:03

标签: python

基本上我想尝试制作一个系统,当你输入你的身份证号码时,再用相同的号码再做一次,它应该显示一个错误。我试图在网上寻找一些解决方案,但似乎找不到真正有用的解决方案。这是我到目前为止所做的代码:

import sys
N = 0
while N < 2:
    ID = input("Please input ID code ")
    if (len(ID)) == 6:
        with open('ID1.txt', 'a') as file:
            file.write(ID + ' ')
            file.write('\n')
        N += 1
        print("ID length: Valid")
    else:
        print("ID Code: Error")
        sys.exit()

有没有人对如何做有任何想法?

2 个答案:

答案 0 :(得分:0)

使用您的代码,最简单的方法是加载文本文件,通过换行符拆分为ID,然后查看ID是否在此新列表中:

N = 1
while N <= 2:
    input_id = input('Type your ID: ')

    assert input_id == 6, 'Invalid ID length'

    with open('IDs.txt', 'r+') as ids:
        id_list = ids.read().split('\n')
        if input_id in id_list:
            print('This ID already exists')
            N += 1
            continue
        else:
            ids.write('\n'+input_id)
            print('valid ID')
            break

但更简洁的方法是使用JSON文件。这样,您可以直接加载列表,并且格式化错误的可能性会降低

import json

N = 1
while N <= 2:
    file = open('IDs.json', 'r')
    ids = json.load(file)
    file.close()

    input_id= input('enter your ID:')
    assert input_id == 6, 'Invalid ID length'

    if int(input_id) in ids:
        print('This ID already exists')
        N += 1
        continue
    else:
        ids.append(int(input_id))
        json.dumps('IDs.json', ids)
        print('ID accepted')
        break

答案 1 :(得分:0)

如果没有代码验证文件中是否存在ID,请在文件中输入2个唯一ID

$rounds = $this->Rounds
    ->find()
    ->contain(['RoundsUsers' => function (\Cake\ORM\Query $query) {
        return $query
            ->select(function (\Cake\ORM\Query $query) {
                return [
                    'RoundsUsers.round_id',
                    'number' => $query->func()->count('RoundsUsers.round_id')
                ];
            })
            ->group(['RoundsUsers.round_id']);
        }]
    );