zoukankan      html  css  js  c++  java
  • python 文件操作

    内容概括:

    • 打开文件的两种方式的区别

    • 打开文件的几种模式

    1.Python open()函数文件打开操作
    打开文件会用到open函数,标准的python打开文件语法如下:

    open(name[,mode[,buffering]])
    
    F = open(name,‘r’)
    f.read()   #读取所有文件内容
    readline ()  #读取一行文件内容
    readlines ()# 以行为单位读取所有文件内容,然后每行作为一个元素存放到列表中
    
    # ‘w’以写的方式打开文件,覆盖文件的所有内容,如果没有这个文件,他会创建文件
    r(read)    #读,文件存在直接可以读,文件不存在会报错
    w(write)   #写,文件存在,会覆盖文件内容,文件不存在会创建文件
    a(append)  #追加,文件不存在就创建文件,文件存在就添加文件内容,只写不读
    

    r+ 读写 不创建新文件 文件读写指针在开头
    w+ 读写 创建新文件 读写指针在开头 如果文件存在会覆盖这个文件之前的内容
    a+ 读写 创建新文件 读写指针在末尾 不会覆盖这个文件之前的内容

    Seek()函数,修改访问文件中指针的位置
    File_object.seek(offset,whence)
    Offset:
    开始的偏移数,也就是代表需要移动偏移的字节数
    Whence:
    0 表示从头开始计算
    1 表示以当前位置为原点进行计算
    2 表示以文件末尾为原点进行计算
    
    # coding=utf-8
    with open('f.txt','w+') as f:
        print f.tell() #返回文件的当前位置读/写指针
        f.write('I love Python
    ')
        print f.tell()
        f.flush() #将缓冲区中的数据立刻写入文件,同时清空缓冲区
        f.seek(0,0)
        print 'now:',f.tell()
        print f.read()
        print '----------'
      
    
    # coding=utf-8
    with open('f.txt','w+') as f:
        print f.tell()#初始位置
        f.write('I love Python
    ')
        f.write('I love Python
    ')
        print f.tell()#光标的当前位置
        f.flush()
        f.seek(-10,2)
        print 'now:',f.tell()
        print f.read()
        print '----------'
        #print f.readline()
        #print content
    

    案例:
    1.实现一个账户注册的代码
    2.实现用已注册的账户登录

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    '''
    定义函数,注册,查找有没有相同的用户名,如果有,则提示
    登入,查找用户名是否存在,存在则进行操作,否则提示
    登入成功,打印出所有的用户名密码
    '''
    def getUserName(aa):
        f = open("passwd2.txt")
        for line in open("passwd2.txt"):
            result = f.readline()
            if name in result:
                return True
        return False
    def getUserExist(username,passwd):
        with open("passwd2.txt") as f:
            result = f.readlines()
            for line in result:
                content = "".join(line).strip()
                content = content.split("	")
                if username == content[0] and passwd == content[1]:
                    return True
        return False
    def getAllUser():
        with open("passwd2.txt") as f:
            return f.readlines()
    
    while True:
        print u''' *********************
    1.注册 
    
    2.登入 
    
    3.q 退出
    *********************
    '''
        choice = raw_input(u"请输入你的选择数字:")
        if choice.isdigit():
            if choice == "1":
                with open("passwd2.txt","a+") as f:
                    name = raw_input(u"请输入要注册的用户名:")
                    if len(name)>0:
                        if not getUserName(name):
                            passwd = raw_input(u"请输入注册的密码:")
                            if len(passwd)>0:
                                f.write(name.strip()+"	"+passwd.strip()+"
    ")
                                print u"注册成功"
                            else:
                                print u"密码不能为空"
                        else:
                            print u"当前用户已注册,请输入新的用户名"
                    else:
                        print u"用户名不能为空"
            elif choice == "2":
                name = raw_input(u"请输入要登入的用户名:")
                if getUserName(name):
                    passwd = raw_input(u"请输入要登入的密码:")
                    if getUserExist(name,passwd):
                        print u"登入成功"
                        print getAllUser()
                        continue
                    else:
                        print u"输入密码不对"
                else:
                    print u"输入的用户名不存在"
                    continue
        elif choice == "q":
            break
        else:
                print u"请输入正确的数字"
                                                                      
    
    
    • 输入用户名密码
    • 认证成功后显示欢迎信息
    • 输错三次后锁定
    #coding:gbk
    import sys,os
    
    i = 0
    while i<3:
        name = raw_input("请输入你的用户名:")
        account_file = open("account_lock.txt","r+")
        result = account_file.readlines()
        for line in result:
            line = line.strip("
    ")
            if name == line:
                print "你的账户已被锁定,请联系管理员解锁"
                sys.exit("wwww")
        user_file = open("passwd.txt")
        user_info = user_file.readlines()
        for line in user_info:
            user_name,user_passwd = line.strip("
    ").split()
            if user_name == name:
                j = 0
                while j<3:
                    passwd = raw_input("请输入密码:")
                    if user_passwd == passwd:
                        print "登入成功,欢迎%s用户"%name
                        print user_info
                        sys.exit(0)
                    else:
                        if j!=2:
                            print "你还剩余余%d次输入机会"%(2-j)
                    j +=1
                else:
                    account_file.write(name+"
    ")
                    print "输入超过最大次数,账户将被锁定"
                    sys.exit("www")
        else:
            print "输入的用户不存在,还剩余%d次输入机会"%(2-i)
        i+=1
    else:
        print "用户不存在,系统退出"
    
    account_file.close()
    user_file.close()
            
    
    
  • 相关阅读:
    python_day2(列表,元组,字典,字符串)
    爬取校花网美眉图
    python FTP常见用例
    mysql-调优
    mysql-事务与存储引擎
    mysql-基本命令与索引
    python基础(三)闭包、装饰器、迭代器、生成器
    Git的http与ssh配置
    python基础(二)抽象
    ssh-keygen 签名ca证书
  • 原文地址:https://www.cnblogs.com/flyhgx/p/6739302.html
Copyright © 2011-2022 走看看