博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python文件操作
阅读量:4325 次
发布时间:2019-06-06

本文共 4062 字,大约阅读时间需要 13 分钟。

一:文件操作必需

  • 文件的路径

可以是相对路径,也可以是绝对路径

  • 文件的编码 

 文件的存储和打开编码必需一样

  • 操作动作

动作用 r  w  a   

 

 

二:文件操作

2.1 读操作

  • read 是将文件的内容全部读取
  • readline  每次只读取文件一行内容
  • 读取的时候要注意要分批区读,如按每行去读
  • 每行读取的内容包括换行符,如果在打印时 print也会加上换行符,所以可以将每次读取的内容strip然后再打印
  • 文件时可迭代对象,可以被for循环

2.1.1 r操作

# read会一次性的读取文件内容

f = open('wangys',mode='r',encoding='utf-8') ret = f.read() print(ret)

 # readline每次读取一行内容,读取的包括换行符

# 内容包括换行符 # 如果不做处理,会将换行符打印出来 f = open('wangys',mode='r',encoding='utf-8')ret = f.readline()print(ret)ret = f.readline()print(ret)# nameage

 

# 对换行符做strip处理 f = open('wangys',mode='r',encoding='utf-8')ret = f.readline().strip()print(ret)ret = f.readline().strip()print(ret) # name age

 

# 推荐读的方式,一行一行的读取f = open('wangys',mode='r',encoding='utf-8')for line in f:    print(line.strip())

 

打开方式:rb  常用于非文字文件,上传下载\ 

2.2 写操作

  • 如果文件存在,则清空文件,如果不存在,则创建
  • 默认不会加换行符,如果需要换行,则需要加换行符

2.2.1 w

f = open('lala',mode='w',encoding='utf-8')f.write('haha')f.close()

 

打开方式:wb 注意encode

f = open('lala',mode='wb')f.write('撒旦飞洒地方'.encode('utf-8'))f.close()

 

2.3  追加

  • 需要文件事先存在
  • 追加内容到文件

打开方式:a

f = open('lala',mode='wb')f.write('撒旦飞洒地方'.encode('utf-8'))f.close()f = open('lala',mode='a',encoding='utf-8')f.write('谁说的')f.close()

 

打开方式: ab

f = open('lala',mode='ab')f.write('我说的'.encode('utf-8'))f.close()

 

2.4 读写

用的最多

打开方式: r+   如果是先读后写,是追加效果(读完后光标移到了最后,写追加到了最后),如果是写读,会有覆盖效果(光标在首位置,然后写)

f = open('lala',mode='r+',encoding='utf-8')print(f.read())f.write('真的')

 

f = open('lala',mode='r+',encoding='utf-8')f.write('假的')print(f.read())f.close()

 

打开方式 r+b

f = open('lala',mode='r+b')print(f.read())f.write('你好啊'.encode('utf-8'))f.close()

 

三:其他操作 

 

3.1  按字符读取

  • read是按照字符来读取的
wangysf = open('wangys_info',mode='r+',encoding='utf-8')data = f.read(3)print(data)f.close()

 

3.2 seek

  • seek第一个参数是偏移量,第二个参数是位置
  • seek(0)移动到开始位置
  • seek(0,2) 移动到文件结束位置
  • seek是按字节来移动的位置的
f = open('wangys_info',mode='r+',encoding='utf-8')f.seek(3)print(f.read())f.close()

 

3.3 tell

  • 告诉我们光标的位置
  • 单位为bytes
王诚的博客f = open('wangys_info',mode='r+',encoding='utf-8')print(f.read())print(f.tell())f.close()

 

通过seek跟read读取指定的内容

读取博客 f = open('wangys_info',mode='a+',encoding='utf-8')f.write('博客')f.seek(f.tell()-6)print(f.read())

 

3.4  readline readlines

readline 一行一行读

王诚博客f = open('wangys_info',mode='r+',encoding='utf-8')line = f.readline()print(line)f.close()

 

readlines

将读取的的每一行内容当作列表的元素放入一个列表中

 

f = open('wangys_info',mode='r+',encoding='utf-8')lines = f.readlines()print(lines)f.close()

 

 

3.5 通过文件句柄将文件所有内容读取出来

f = open('wangys_info',mode='r+',encoding='utf-8')for line in f:    print(line)f.close()

 

 

3.6  使用with打开文件

with open('wangc',mode='r+',encoding='utf-8') as f1,\        open('wangys',mode='r+',encoding='utf-8') as f2:    print(f1.read())    print(f2.read())

 

 

3.7

用户注册登录

register_user_name = input("请输入你要注册用户名").strip()register_password = input("请输入密码").strip()with open('user_list',mode='w',encoding='utf-8') as register_f:    register_f.write('{}\n{}'.format(register_user_name,register_password))print('您注册成功')count = 0user_list=[]while count < 3:    login_user = input("请输入你要登录的用户名称").strip()    login_pwd = input("请输入你登录的密码").strip()    with open('user_list',mode='r+',encoding='utf-8') as judge_login_user:        for line in judge_login_user:            user_list.append(line)        if login_user == user_list[0].strip() and login_pwd == user_list[1].strip():            print('登录成功')            break        else:print('用户名密码错误')    count+=1

 

 

3.8  文件内容修改

wangys_info文件  将文件里的wangys替换为王诚

姓名:wangys性别:男import oswith open('wangys_info',encoding='utf-8') as f1,\        open('wangys_info.bak','w',encoding='utf-8') as f2:    for line in f1:        if "wangys" in line:            line=line.replace('wangys','王诚')        f2.write(line)os.remove('wangys_info')os.rename('wangys_info.bak','wangys_info')

 

 3.9 简单的日志处理

id,name,age,sex1,wangys,18,male2,mengsx,18,female3,caomei,0.5,male
log=[]with open('info',mode='r',encoding='utf-8') as f:    first_line_list = f.readline().strip().split()    for line in f:        dic = {}        for index in range(len(first_line_list)):            dic[first_line_list[index]] = line.strip().split()[index]            log.append(dic)print(log)

 

 

 

转载于:https://www.cnblogs.com/wc89/p/10261545.html

你可能感兴趣的文章
Shell 脚本进程并发&进程数控制
查看>>
Java基础String类
查看>>
yum -y list java* 查看当前java的版本
查看>>
Linux创建用户
查看>>
github中markdown语言的使用规则
查看>>
clean-css 安装 使用
查看>>
Java设计模式(Design Patterns In Java)读书摘要——第1章 绪论
查看>>
Linux下Nginx安装
查看>>
LVM扩容之xfs文件系统
查看>>
Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
查看>>
2010年ImagineCup,我们共同走过
查看>>
代码片段收集
查看>>
vue-cli3创建项目时报错
查看>>
输入1-53周,输出1-53周的开始时间和结束时间
查看>>
实验二
查看>>
shell——按指定列排序
查看>>
crash 收集
查看>>
Oracle数据库索引使用及索引失效总结
查看>>
507 LOJ 「LibreOJ NOI Round #1」接竹竿
查看>>
UI基础--烟花动画
查看>>