Python文件操作

上一篇:Python2与3的一些注意要点(后期持续更新) 点击跳转
目录篇:python相关目录篇 点击跳转
下一篇:字符集问题 点击跳转

 

目录

  • #"r"读模式,只可以读,不可以写,不可以追加(两种形式):
  • #"a"追加模式,只可以追加,不可以读
  • #"readline"读取文件内容(每次读取一行)
  • #"r+"读写模式
  • #"w+"写读模式(完全废物的模式)
  • #"a+"追加读写
  • #"rb" 读取二进制文件
  • #"wb" 写入二进制文件
  • #f.truncate()#截断,不指定就清空文件所有内容.再次复制歌词到文件内
  • #".tell"读取光标当前位置(以后可以利用光标进行回退)
  • #.seek 移动光标到指定位置
  • #其他一些参数

#"r"读模式,只可以读,不可以写,不可以追加(两种形式):

f = open("yesterday",encoding="utf-8").read()

f = open("yesterday",'r',encoding="utf-8").read()

print(f)  #获取到该程序的目录下的yesterday文件的内容

#"w":写模式,只可以写(覆盖),不可以读,不可以追加

f = open("yesterday2",'w',encoding="utf-8") #如果该程序的目录下没有该文件会自动创建

f.write("我爱天安门\n")

#"a"追加模式,只可以追加,不可以读

f = open("yesterday2",'a',encoding="utf-8")

f.write("我爱北京天安门........\n")

#"readline"读取文件内容(每次读取一行)

f = open("yesterday2",'r',encoding="utf-8")

for i in range(5):

print(f.readline()) #f.readline:只读1行,因为循环所以读5行

#"r+"读写模式

f = open("yesterday2",'r+',encoding="utf-8")

print(f.readline())

print(f.readline())

print(f.readline())

f.write("Burgess will rich")#写入的内容是追加到文件内容的最后

#"w+"写读模式(完全废物的模式)

#"a+"追加读写

f = open("yesterday2",'a+',encoding="utf-8")

f.write("-----------diao----------\n")

print(f.tell())

f.seek(10)

print(f.readline())

print(f.readline())

 

#"rb" 读取二进制文件

f = open("yesterday2",'rb')

print(f.readline())

print(f.readline())

print(f.readline())

#二进制文件每行内容:开头是"b'" "内容和字符串没差别"结尾"\r\n"

#什么时候会用到,网络数据传输,FTP传输啊

#二进制文件如果用字符模式打开就可能损坏

 

#"wb" 写入二进制文件

f = open("yesterday2",'wb')

f.write("hello binary\n".encode())#.encode字符转二进制

f.close()#查看yesterday2该文件 已经写入

 

#f.truncate()#截断,不指定就清空文件所有内容.再次复制歌词到文件内

不能在w模式下使用,因为w模式是新建覆盖,所以哪怕指定截断位置也是清空

只能在a模式(追加

 

#".tell"读取光标当前位置(以后可以利用光标进行回退)

test.txt

aaa a
aaa a
aaa a
aaa a

f = open("test.txt",'r',encoding="utf-8")#

print(f.tell())  #光标位置是0

print(f.readline())   #移动光标到第一行的行尾巴,并且打印第一行所有的字符: aaa a

print(f.tell())  #光标位置是7(回车符算2个光标,空格算一个光标)

print(f.readline(2))  #移动光标到第二行的字符2并且打印该行前面的字符 :aa

print(f.tell())  #光标位置是9

#.seek 移动光标到指定位置

f.seek(0)  #移动光标到0位置

print(f.tell())  #光标位置是0

 

#其他一些参数

f = open("yesterday2",'r',encoding="utf-8")

print(f.encoding)#查看该文件字符集

print(f.fileno())# 返回一个编号,操作系统专门有接口调用文件

print(f.name)#该文件的名

print(f.isatty())#判断该文件是否是终端设备tty文件

#.detach :编辑中改字符集(基本没用)

print(f.seek(10))#移动光标到10的位置

print(f.readable())#判断该文件是否可读

print(f.writable())#判断文件是否可写

print(f.close()) #文件关闭(不关闭就会一直在内存,非常浪资源)

 

f = open("yesterday2",'a',encoding="utf-8")

print(f.flush())#刷新内存缓存数据到硬盘(一般使用追加的模式,或者写入的模式使用

# 等达到你指定的大小数据,默认有些设置自动刷入硬盘,

#如果没自动就需要手动使用该.flush参数把数据刷入硬盘

#对于银行存钱数据重要的环境就需要确定数据是否到达硬盘

#所以需要客户每次写入的数据,就每次使用flush刷进硬盘,确保数据完

 

with语句(生产使用推荐)

为了避免打开文件后忘记关闭

import sys

#f = open("yesterday2","r",encoding="utf-8")

with open("yesterday2","r",encoding="utf-8") as f ,\

      open("yesterday2", "r", encoding="utf-8") as f2:

       for line in f:

            print(line)

#with 相当于 执行了以下操作以后自动关闭文件

#如果需要同时打开多个文件(官方开发规范一行代码不应该超过80个字符)

 

硬盘源文件是不可以修改的,只会覆盖,

所以如何修改?

1.必须vim文件把内容加载到内存进行修改

2.打开另外一个文件然后修改完写到新的文件里(这样既保留了源文件,同时修改后的文件)

上一篇:Python2与3的一些注意要点(后期持续更新) 点击跳转
目录篇:python相关目录篇 点击跳转
下一篇:字符集问题 点击跳转

你可能感兴趣的:(Python篇)