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

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

一、文件操作
  open()文件句柄   open()打开一个文件,获取的是文件句柄
f = open("胡辣汤.txt", mode="r", encoding="utf-8")读取文件中的内容,f 变量,操控 胡辣汤.txt 文件的句柄read(n)  #读取n个字符content = f.read(3)content = f.read() #一次性全部读取出来
line = f.readline() #读取一行数据print(line.strip()) #strip()去掉空白,空格 \t \nprint(line, end="") #也是去掉空白,空格 \t \n
lst = f.readlines() #一次性全部读取出来,返回的是列表print(lst)
  read和readlines 正常情况下不会用到
  文件句柄是一个可迭代的对象
#必须掌握f = open("胡辣汤", mode="r", encoding="utf-8")for line in f:   #读取文件中的内容。 一行一行的读取。每次读取的内容交给前面的变量    print(line, end="")

 

 
二、路径问题
  1、绝对路径(当文件路径是固定的时候)       从磁盘根目录找文件。 Windows下用的是c, d, e,f  Linux:\user\bin\xxxx   2、相对路径(用的多)       相对路径相当于当前程序所在的文件夹       ../ 表示上一层文件夹   注意:\n  \t 转移字符,有固定的含义的。推荐在路径前面加r
f = open(r'E:\哈哈\t\n\护士模特少妇.txt', mode='r', encoding='utf-8')print(f.read())

 

三、文件操作的相关模式
  1、mode
    mode: r(只读), w(只写), a(追加写入)
   当mode="w"时每open一次,就会清空一次文件(慎用)
f = open(r"taibai", mode="w", encoding="utf-8") #可以帮我们创建文件f.write("太白")f.write("很白")f.close()f = open(r"taihei", mode="a", encoding="utf-8")f.write("太黑\n")f.write("很黑\n")f.close()
    mode: rb(只读), wb(只写), ab(追加写入)   b  -bytes 读取和写入的都是字节,用来操作非文本文件(图片、音频、视频)
f1 = open(r"c:\胡一菲.jpg", mode="rb")f2 = open(r"d:\胡一菲.jpg", mode="wb")for line in f1:  #分批量读取内容   f2.write(line)  #open()出来的结果可以使用read()或者write, 根据mode来看f1.close()f2.close()
    mode: r+(读写), w+(写读), a+(追加写读) #同理 r+b,w+b,a+b
r+,正常的f = open("person", mode="r+", encoding="utf-8")content = f.read()f.write("黄蓉")print(content)错误的示范f = open("person", mode="r+", encoding="utf-8")f.write("杨千桦") # 默认如果直接写入的话。 在开头写入。 覆盖开头的内容content = f.read()print(content)r+坑: 不论你读取多少内容。再次写入的时候都是在末尾f = open("person", mode="r+", encoding="utf-8")info = f.read(3)f.write("胡辣汤")print(info)w+f = open("person", mode="w+", encoding="utf-8") # 先清空。 然后再操作f.write("你好。 我叫肿瘤君")content = f.read() # 写入东西之后。 光标在末尾。 读取不到内容的print(content)f.close()a+, 不论光标在何处 写入的时候都是在末尾f = open("person", mode="a+", encoding="utf-8")f.write("我叫李嘉诚") # 默认写在末尾content = f.read()print(content)f.close()
  2、文件复制
f1 = open(r"c:\日记本.txt", mode="r", encoding="utf-8")f2 = open(r"d:\日记本.txt", mode="w", encoding="utf-8")for line in f1:  #从f1中读取数据    f2.write(line)    #写入到f2中f1.close()f2.close()
 
四、相关操作
f = open("person", mode="r", encoding="utf-8")info = f.read(3)  #读取三个字符#seek()移动光标f.seek(3)info = f.read(3)
  seek(参数1, 参数2)   参数1表示的是偏移量,移动多少个单位   参数2表示从什么位置进行偏移   0: 开头   1: 当前位置   2: 末尾   把光标移动到文件的开头:seek(0)   把光标移动到末尾:seek(0, 2)
print(f.read(2))  #读取两个字符。f.seek(0)print(f.read(2))  #读取两个字符,和上次读取的相同tell() 程序返回当前光标的位置info = f.read(3)print(info)print(f.tell())  #获取光标位置
  truncate()  截取文件,慎用   尽量不要瞎测试 w, w+, w+b,truncate()
f = open(r"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe", mode="r+", encoding="utf-8")f.seek(5) # 光标移动到5f.truncate() # 默认从开头截取到光标位置# f.truncate(3) # 从头截取到3f.close()

   QQ就GG了

五、文件修改
import os  # 导入os模块import time  # 时间模块# 优点:不用关闭句柄, 自动关闭连接with open("唐诗", mode="r", encoding="utf-8") as f1, \        open("唐诗_副本", mode="w", encoding="utf-8") as f2:    for line in f1:        line = line.replace("善良", "sb")        f2.write(line)time.sleep(5)os.remove("唐诗")  # 删除源文件time.sleep(5)os.rename("唐诗_副本", "唐诗")  # 把副本改名成源文件
 

 

 

转载于:https://www.cnblogs.com/minusone/p/9857359.html

你可能感兴趣的文章
常用集合比较
查看>>
二分搜索
查看>>
感觉这周的每日都是累
查看>>
Tarjan求点双连通分量
查看>>
Tomcat项目自动部署脚本
查看>>
Python操作MySQL数据库
查看>>
自动化部署之jenkins及简介
查看>>
CodeForces 1152D Neko and Aki's Prank
查看>>
Python 用pygame模块播放MP3
查看>>
inline必须在定义、实现都标记
查看>>
从单链表到循环链表
查看>>
百度招聘无处不在!
查看>>
丢失控制文件恢复实验记录--3(当前的控制文件损坏,归档日志文件损坏且备份的控制文件是旧的情况恢复数据库)...
查看>>
Ganglia监控MySQL
查看>>
反射和动态导入模块
查看>>
信息社会
查看>>
Mysql存储引擎概念特点介绍及不同业务场景选用依据
查看>>
关于Java类Calendar做统计时 获取日期的一些常见操作
查看>>
从程序员转向淘宝店主的探索
查看>>
openstack 中国联盟公开课參会总结
查看>>