博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件基本处理
阅读量:4641 次
发布时间:2019-06-09

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

1 打开文件,将文件句柄赋值给一个变量

2 拿句柄对文件进行操作

3 关闭文件

将一个文件第一行写道另外一个文件

f = open("test","r",encoding="utf-8") # open找的是系统的编码x = f.readlines()f.close()f1 = open("test1","w",encoding="utf-8")f1.write(x[0])f1.close()

 

with open("test","r",encoding="utf-8") as f,\        open("test1","w",encoding="utf-8") as f1:  #with open不用close()    x = f.read()    f1.write(x)

 

北京182iloveyoubeijing111
test
with open("test","rb") as f :#b的方式不能用encoding    data= f.read()    print(data)

 

b'\xe5\x8c\x97\xe4\xba\xac182\r\niloveyoubeijing111\r\n'
result

\r\n代表回车,字母和数字可以直接显示,汉字用2进制代替,文件是utf-8格式,所以一个汉字三个字节

print(data.decode("utf-8"))

 

北京182iloveyoubeijing111
result

 

with open("test","wb") as f:    x = "我爱北京天安门"    f.write(bytes(x,encoding="utf-8"))    #f.write(bytes(x.encode("utf-8")))#效果一样

 f.encoding表示的是文件打开的编码,如果不知道文件编码是什么,不知道怎么打开,可以用latin-1试一下

我爱北京天安门我爱北京天安门你好么我很好
test
with open("test","r",encoding="utf-8") as f:    print(f.readlines())  #windows上回车\r\n占2个字符。python默认处理显示成\nwith open("test","r",encoding="utf-8",newline="") as f:    print(f.readlines())  #windows上回车\r\n占2个字符。python默认处理显示成\n

 

['我爱北京天安门我爱北京天安门\n', '你好么\n', '我很好']['我爱北京天安门我爱北京天安门\r\n', '你好么\r\n', '我很好']
Result

 

with open("test","r",encoding="utf-8") as f:    f.readline()    print(f.tell())  #光标位置处,即移动的字节处    f.readline()    print(f.tell())

 

# 3*14+2=44# 3*3+2+44=55
Result

 

f.seek(3)           #移动光标到第3个字节之后,    print(f.tell())    print(f.readline())  #如果移动的不是3的整数倍,会报错,因为utf-8无法解码

 

3爱北京天安门我爱北京天安门
Result

 

print(f.read(4))     #read读的是字符f.truncate(5)        #截取0-5字节并保留,所以一定要是w模式 r+.a+,w可以,w+不行print(f.readlines())

 seek(a,0)从头开始seek,seek(a,1)从当前光标seek,seek(a,2)从后向前seek,2的时候a需要是负数,文件打开模式需要带b

print last sentence of the file
with open("test","rb") as f:    offsets = -3    n = 0    while True:        f.seek(offsets,2)        data = f.readlines()        if len(data)>1:                       #如果取到2行以上            print("这是最后一行:" ,data[-1].decode("utf-8"))  #data列表里是二进制,需要解码            break        offsets*=2
第一行第二行第三行第四行最后一行
test
这是最后一行: 最后一行
result

 

转载于:https://www.cnblogs.com/telma/p/10510355.html

你可能感兴趣的文章
CDMA鉴权
查看>>
ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
查看>>
过滤器与拦截器区别
查看>>
USACO 1.5.4 Checker Challenge
查看>>
第二阶段站立会议7
查看>>
[18]Debian Linux Install GNU GCC Compiler and Development Environment
查看>>
JAVA多线程
查看>>
ACE(Adaptive Communication Environment)介绍
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
python编码问题
查看>>
POJ 2031 Building a Space Station
查看>>
面向对象1
查看>>
编程开发之--java多线程学习总结(5)
查看>>
register_globals(全局变量注册开关)
查看>>
as3调用外部swf里的类的方法
查看>>
如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
查看>>
第五次作业
查看>>
织梦教程
查看>>