Python----文件操作I/O(打开文件、读写、关闭文件)
打开文件:(注:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。)
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener:
mode参数:
r:只读模式;指针指向文件开头。这是python默认的文件打开模式。
w:只写模式;如果文件已经存在,则覆盖原有文件。如果文件不存在,则新建文件。指针指向文件开头。
x:只写模式;新建一个文件,如果该文件已存在则会报错。
a:追加模式;如果文件已经存在,则从原文件末尾开始追加写入。如果文件不存在,则创建新文件。指针指向文件末尾。
b:二进制模式
"+"表示可以同时读写某个文件
1 #coding:utf-8 2 3 def json_file(): 4 with open("gm.txt", "mode") as f1: 5 f1.write("x:只写模式;文件不存在,则新建文件,反之报错") 6 with open("gm.txt", "w") as f2: 7 f2.write("w:只写模式;若文件不存在,则新建文件,反之覆盖原有文件;指针指向文件开头") 8 with open('gm.txt', 'a') as f3: 9 f3.write("a:追加模式;若文件不存在,则新建文件,反之从原文件末尾开始追加写入;指针指向文件末尾。") 10 with open('gm.txt', 'r+', encoding = 'GBK') as f4: 11 f4.write("r:只读模式;是Python默认的打开文件模式;指针指向文件开头;注:"+"表示可以同时具有读写权限") 12 if __name__ == '__main__': 13 json_file()
常用方法:
对文件的基本操作,一般使用到的方法为具体为:
open()打开文件
read()读取文件
write()写入文件
close()关闭文件
fileno()文件描述符
flush()刷新文件内部缓存区
isstty()判断文件是否同意tty设置
readable()是否可读
readline()仅读取一行数据
seek()指定文件中指针位置
tell()获取指针位置
writeable()是否可写
truncate()截取数据,仅保留指定之前数据
1 def caidan(): 2 while True: 3 print('=======欢迎登录博客系统=======') 4 inp = int(input('1、登录 2、注册 3、退出 \n')) 5 if inp == 1: 6 is_login_check() 7 elif inp == 2: 8 register() 9 elif inp == 3: 10 break 11 else: 12 print("输入错误,请重新选择,谢谢!") 13 14 def register(): 15 username = input("请输入用户名:") 16 password = input("请输入密码:") 17 with open('userinfo.txt', 'a') as f: 18 userinfo = username + "&" + password + "\n" 19 f.write(userinfo) 20 21 def user_exit(username): 22 with open('userinfo.txt', 'r') as f: 23 for userinfo in f: 24 userInfo = userinfo.strip() 25 info = userInfo.split('&') 26 if username == info[0]: 27 return True 28 return False 29 30 def login(username, password): 31 with open('userinfo.txt', 'r') as f: 32 for userInfo in f: 33 userInfo = userInfo.strip() 34 info = userInfo.split('&') 35 if username == info[0] and password == info[1]: 36 print('恭喜您,登录成功!') 37 return True 38 return False 39 40 def is_login_check(): 41 username = input('请输入您的账号:\n') 42 is_user_exits = user_exit(username) 43 if is_user_exits: 44 password = input('请输入账号的密码:\n') 45 is_login = login(username, password) 46 if is_login: 47 return '登录成功!' 48 else: 49 print('用户名或者密码错误!') 50 else: 51 print('Sorry,您输入的账号不存在') 52 inp = input('是否注册Y/N:\n') 53 if inp == 'Y': 54 register() 55 else: 56 caidan() 57 58 if __name__=='__main__': 59 caidan()