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()