python学习之操作文件对象操作

  • 创建文件对象:内建函数open()

利用内建函数open()创建文件对象(打开文件后记得close(),防止断电异常等造成数据丢失)

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

常用参数file指定文件位置(文件分隔符需要转义),mode:指定文件打开的模式,默认mode='t'(文本模式)

示例:

#打开文件,创建文件对象
f = open('D:\\Python\\file\\text1.txt') 
print(f)   #打印<_io.TextIOWrapper name='D:\\Python\\file\\text1.txt' mode='r' encoding='cp936'>

#文件中的具体内容
'''
练习python文件打开
文件打开
文件
'''
  • 读取文件f.read([size])

参数size可不指定:默认读取所有,当size指定为负值时效果与未指定时一样读取所有内容,指定size值则从文件指针位置处读取指定数量的字符数(注意是字符数不是字节数)

实例:

print(f.read())
#打印所有内容
'''
练习python文件打开
文件打开
文件
'''
#将文件指针定位到文件开头
f.seek(0,0)

#读取前10个字符
print(f.read(10))  #'练习python文件'

#读取文件指针之后所有内容,从第11个字符开始到最后
print(f.read(-1))
#内容
'''
打开
文件打开
文件
'''
  • 读取文件f.readline()
#文件指针重新定位到开始位置
f.seek(0)

#从文件指针位置读取一行,一行的截止位置标识:\n
#按行读取
print("====f.readline()====")
print(f.readline()) 
print(f.readline())  
print(f.readline())

 结果:

  • 读取文件f.readlines()

读取所有行存到list中,每行为list中的一个元素

#读取所有行
#print(f.readlines())  #['练习python文件打开\n', '文件打开\n', '文件\n', '\n']

allLines = f.readlines()
#遍历
for eachLine in allLines:
    print(eachLine)

结果:

注:python的文件对象提供更简单的遍历文件方式

#直接遍历文件对象中内容
for eachLine in f:
    print(eachLine )

 

  • 移动文件指针位置f.seek(offset,from):当前指针所在位置(字节数值)

参数offset:要偏移的字节数,from:文件指针开始偏移的位置,from=0:从文件开始位置,from=1:从文件指针当前位置,from=2:从文件末尾

注:默认打开文件的方式为文本模式,这种模式下调用seek()方法时如果from参数不是0,会报错:io.UnsupportedOperation: can't do nonzero cur-relative seeks(文本模式打开只允许从文件开头为相对位置),此时需要修改文件打开的方式

#文件打开模式rb
f = open('D:\\Python\\file\\text1.txt','rb')

#文件指针重新定位到文件开始位置
f.seek(0,0)
f.seek(4,0)  #从开头位置偏移4个字节(两个汉字)

#打印偏移后的当前行内容
#print(f.readline())  #'python文件打开'

#从文件指针当前位置偏移2个字节
print(f.seek(2,1))  #值为6

#读取6个字符
print(f.read(6))  #"b'thon\xce\xc4'",包括四个字母1个汉字

#从文件末尾开始读取
print(f.tell())  #当前文件指针所在位置:12

print(f.seek(10,2))  #该文件内容结尾文件指针为38,w文件末尾后再偏移10个字节,打印:48
  •  f.tell():查看当前文件指针位置,如上代码
  • f.close():关闭打开的文件
  • f.write(str):写入字符串,文件末尾追加
#open('文件路径','打开方式'),如果要写入内容需写入权限,文件打开方式至少包含w/+等
f =open('D:\\Python\\file\\text1.txt',"r+")#转义磁盘\
print(f) #<_io.TextIOWrapper name='D:\\Python\\file\\text1.txt' mode='r' encoding='cp936'>

#f.write(str)文件末尾追加字符串
str2019 = '2019年'
print(f.write(str2019))  #返回的是字符串的字符数长度:5

print(list(f))
f.close()

猜你喜欢

转载自blog.csdn.net/qq_33564262/article/details/85611215