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\n')
    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\n')
    f.write('I love Python\n')
    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("\t")
            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.注册 \n
2.登入 \n
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()+"\t"+passwd.strip()+"\n")
                            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("\n")
        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("\n").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+"\n")
                print "输入超过最大次数,账户将被锁定"
                sys.exit("www")
    else:
        print "输入的用户不存在,还剩余%d次输入机会"%(2-i)
    i+=1
else:
    print "用户不存在,系统退出"

account_file.close()
user_file.close()
        

posted @ 2017-04-20 16:12  xiaoganghu  阅读(187)  评论(0编辑  收藏  举报