文件基本处理

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)

 

北京182
iloveyoubeijing111
test
with open("test","rb") as f :#b的方式不能用encodingdata= 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"))

 

北京182
iloveyoubeijing111
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 = -3n = 0while True:f.seek(offsets,2)data = f.readlines()if len(data)>1:                       #如果取到2行以上print("这是最后一行:" ,data[-1].decode("utf-8"))  #data列表里是二进制,需要解码breakoffsets*=2
第一行
第二行
第三行
第四行
最后一行
test
这是最后一行: 最后一行
result

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ ofstream和ifstream详细用法

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符&…

如何将JAR包发布到Maven中央仓库?

将jar包发布到Maven中央仓库(Maven Central Repository)&#xff0c;这样所有的Java开发者都可以使用Maven直接导入依赖&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL与HTTPS

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前&#xff0c;所有的加密都采用对称加密&#xff0c…

北向资金运作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#获取交易日历 import datetime def get_cal_date(start,end):dates ak.to…

网络性能测试工具iperf详细使用图文教程【转载】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 转载于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代码审查:程序员内炼之道

摘要&#xff1a;“关注并弄清楚桥梁修建细节&#xff0c;否则你建起来的桥梁有可能坍塌。”代码审查更重要的是一种技术分享或者代码共享。程序员如何提升自我修炼之道&#xff0c;欢迎来支招。 代码审查更重要的是一种技术分享或者代码共享。在审查过程中&#xff0c;通过被…

扎实的基础是成功的法宝

转载链接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基础是好成绩的根本,无论做任何事情,基本功的训练是成功的前提:“还没有学会走,就想学跑,那不行,肯定会摔跟头。”这是成功人士的经验之谈。要建成高楼大厦,地基必须打好。…

发送qq邮件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 写成了一个通用的函数接口&#xff0c;想直接用的话&#xff0c;把参数…

排序代码(python,c++) 及 基本算法复杂度

0.导语 本节为手撕代码系列之第一弹&#xff0c;主要来手撕排序算法&#xff0c;主要包括以下几大排序算法&#xff1a; 直接插入排序 冒泡排序 选择排序 快速排序 希尔排序 堆排序 归并排序 1.直接插入排序 【算法思想】 每一步将一个待排序的记录&#xff0c;插入到前面…

TCP/IP四层模型与OSI参考模型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 TCP/IP四层模型&#xff1a; 1.链路层&#xff08;数据链路层/网络接口层&#xff09;&#xff1a;包括操作系统中的设备驱动程序、计算…

Metal日记:使用步骤指南

本文参考资料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal处理逻辑 无论是CoreImage、GPUImage框架&…

还驾驭不了4核? 别人已模拟出百万核心上的并行

摘要&#xff1a;不管是台式机还是笔记本&#xff0c;四核双核都已经不是新鲜的事了。计算机领域的你可能已经认识到了给电脑选配4核的处理器完全是一种浪费&#xff0c;因为大多数的程序都不支持多核心的并行处理。然而斯坦福的计算机科学家最近公布&#xff0c;他们已经模拟出…

docker安装并运行ubuntu

拉取镜像 docker pull dorowu/ubuntu-desktop-lxde-vnc 运行容器&#xff1a; docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django内置权限扩展案例

当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统&#xff0c;Django内置权限系统基于model层做控制&#xff0c;新的model创建后会默认新建三个权限&#xff0c;分别为&#xff1a;add、change、delete&#xff0c;如果给…

Java 从入门到高级学习路线

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Java 从入门到高级学习路线《一》1.Jvm 部分Jvm 内存模型、Jvm 内存结构、Jvm 参数调优、Java 垃圾回收《二》Java 基础部分1.必须会使用…

Flutter Mac iOS 环境配置

官方文档&#xff1a;flutter.io/docs/get-st… 1.需要的命令行工具 bash curl git 2.x mkdir rm unzip which 2.SDK下载地址 flutter_macos_v1.0.0-stable.zip storage.googleapis.com/flutter_inf… 3.解压Flutter SDK cd ~/Flutter/SDK $ unzip ~/Downloads/flutter_macos_v…

多线程研究1

单线程&#xff1a; from urllib.request import urlretrieve import time import random starttime.time() fopen(E:\Python\py\web\hh.txt,r)#打开存放URL的文件 af.readlines() f.close() for i in a:brandom.randint(0,30)urlretrieve(i,%d.png%b) endtime.time() print(…

android viewpage预加载和懒加载问题

1、本人理解懒加载和预加载问题某种情况下可以归结为一类问题&#xff0c;下面我就说一下我遇到的预加载问题和懒加载问题及解决的相应方法&#xff1a; - [1 ] 预加载问题 描述&#xff1a;我用到了三个fragment、viewpage及tablayout实现点击切换、滑动切换。 …

大数据,且行且思

“大数据”概念于20世纪90年代被提出&#xff0c;最初只是对一些在一定时间内无法用传统方法进行抓取、管理和处理的数据的统称。随着时间的推移和科技的发展以及物联网、移动互联网、SNS的兴起&#xff0c;每年产生的数据量都以几何级数增长&#xff0c;《IDC Digital Univers…

IntelliJ IDEA中新建JAVA WEB项目、maven项目

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在IntelliJ IDEA 中新建一个Web应用项目。 1、 在主界面顶部菜单栏依次“File”-"New"-"Project..." 2、在对话框中…