python之file 方法

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

1    file.close()  

close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。

当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "wb")
print ("文件名为: ", fo.name)# 关闭文件
fo.close()
结果:
文件名为:  file.txt
没有这个文件,会自动创建

2    file.flush()

flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "wb")
print ("文件名为: ", fo.name)# 刷新缓冲区
fo.flush()# 关闭文件
fo.close()

3    file.fileno()
    返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "wb")
print ("文件名为: ", fo.name)
fid = fo.fileno()
print ("文件描述符为: ", fid)
# 关闭文件
fo.close()
结果:
文件名为:  file.txt
文件描述符为:  3

4    file.isatty()
    如果文件连接到一个终端设备返回 True,否则返回 False。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "wb")
print ("文件名为: ", fo.name)ret = fo.isatty()
print ("返回值 : ", ret)# 关闭文件
fo.close()
结果:
文件名为:  file.txt
返回值 :  False

5    file.next()
  next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发

fo = open("file.txt", "r")
print ("Name of the file: ", fo.name)try:for index in range(5):line = next(fo)print ("Line No %d - %s" % (index, line))
except StopIteration:print ('fiel is end ')
# Close opened file
fo.close()
结果:
Name of the file:  file.txt
Line No 0 - 1
Line No 1 - 2
Line No 2 - 3
Line No 3 - 4
fiel is end 

6    file.read([size])
    从文件读取指定的字节数,如果未给定或为负则读取所有。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)line = fo.read()
print ("读取的字符串: %s" % (line))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取的字符串: 1
2
3
4

7    file.readline([size])
readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)line1 = fo.readline()
print ("读取第一行 %s" % (line1))line2 = fo.readline(5)
print ("读取的字符串为: %s" % (line2))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取第一行 1isanumber读取的字符串为: 2stri

8    file.readlines([sizeint])

readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。

如果碰到结束符 EOF 则返回空字符串

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)for line in fo.readlines():      #依次读取每行  line = line.strip()          #去掉每行头尾空白  print ("读取的数据为: %s" % (line))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取的数据为: 1isanumber
读取的数据为: 2string
读取的数据为: 3
读取的数据为: 4

9    file.seek(offset[, whence])
  seek() 方法用于移动文件读取指针到指定位置。

  • offset -- 开始的偏移量,也就是代表需要移动偏移的字节数

  • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)line = fo.readline()
print ("读取的数据为: %s" % (line))# 重新设置文件读取指针到开头
fo.seek(0,0)
line = fo.readline()
print ("读取的数据为: %s" % (line))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取的数据为: 1isanumber读取的数据为: 1isanumber

10    file.tell()
    tell() 方法返回文件的当前位置,即文件指针当前位置。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)line = fo.readline()
print ("读取的数据为: %s" % (line))# 获取当前文件位置
pos = fo.tell()
print ("当前位置: %d" % (pos))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取的数据为: 1isanumber当前位置: 11

11    file.truncate([size])
    truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "r+")
print ("文件名为: ", fo.name)line = fo.readline()
print ("读取的数据为: %s" % (line))# 截断剩下的字符串
fo.truncate(3)      --这个不传数值,不起作用,整个文件# 尝试再次读取数据
line = fo.readline()
print ("读取数据: %s" % (line))# 关闭文件
fo.close()
结果:
文件名为:  file.txt
读取的数据为: 111111111111111读取数据: 222222222222

但是file.txt 文件中只剩下111

12    file.write(str)

write() 方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。

如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str'。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "w")
print ("文件名为: ", fo.name)str = "python3"
fo.write( str )# 关闭文件
fo.close()
结果:
[python@master zhang]$ more file.txt 
python3

13    file.writelines(sequence)

writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。

# -*- coding: UTF-8 -*-# 打开文件
fo = open("file.txt", "w")
print ("文件名为: ", fo.name)seq = ["python2 1\n", "python3 2"]
fo.writelines( seq )# 关闭文件
fo.close()
结果:
文件名为:  file.txt
[python@master zhang]$ more file.txt 
python2 1
python3 2

 

优秀的判断力来自经验,但经验来自于错误的判断。

 

转载于:https://www.cnblogs.com/hello-wei/p/9636729.html

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

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

相关文章

100条经典C笔试题

题目来源: 1、中兴、华为、慧通、英华达、微软亚洲技术中心等中 外企业面试题目; 2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部分C 语言面试题中可能会参杂部分和C 相关的知 识,为了保持题目的灵活性故保留&#x…

Linux kernel 中模块化的平台驱动代码介绍

介绍在linux kernel中通过module_platform_driver来实现模块化平台驱动。大量的设备驱动程序都基于该种方式来实现,使用频次非常的高,在linux kernel 5.4.124的代码中搜索module_platform_driver共有2356次引用。这个宏的使用方式大相径庭,有…

Golang切片的三种简单使用方式及区别

概念 切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构。切片并不存储任何元素而只是对现有数组的引用。 三种方式及细节案例 ①定义一个切片,然后让切片去引用一个已经创建好的数组 package main import…

这样给数组初始化,你肯定没有见过

今天在朋友圈看到一个朋友发的图片是给数组初始化的代码截图如下:我看到这个代码,也让我着实惊了一下,写代码这么久,也没有见过这样子初始化的。这个代码是出自海思的SDK里面的,华为的大牛还是很多啊,学习C…

如何让自己升薪

1) 经理应该好好看一看年度工作总结,这样他就能知道我对同事提供了多大的帮助。 2)如果一个程序员的工作很容易完成,那就不要等他主动来索取更多的任务。相反,积极交给他更加有挑战性的复杂的任务。 3) 在谈话中不要阻止建设性的批评。这个经…

ARM知识点

1、ARM有几种工作模式? 答:有7个基本工作模式:用户模式(user)、系统模式(system)、数据访问中止模式(abort)、未定义指令中止模式(undef)、快速中…

《你不知道的JavaScript》中卷 KYLE SIMPSON 著 单业 姜南 译

一部分 类型和语法 1.内置类型(7) null、undefined、boolean、number、string、object、symbol(ES6新增,符号) 2.toString()和Json.stringify() (1)字符串、数字、布尔值和null的JSON.stringify()规则与toString基本相同 (2)如果传递给JSON.…

CP命令引发的思考

转自:OSC开源社区今天同事用 cp 命令,把他给惊到了!背景是这样的:他用 cp 拷贝了一个 100 G的文件,竟然一秒不到就拷贝完成了!用 ls 看一把文件,显示文件确实是 100 G。sh-4.4# ls -lh -rw-r-…

安装windows XP或者2003时提示找不到硬盘驱动器的解决办法(总结)转载

(本文属于转载) 由于SATA接口在近年才推出,Windows XP问世的时候,还没有它,所以安装Windows XP时,需要调用SATA驱动程序,而你又没有提供相应的驱动,就会出现无法识别硬盘的错误。 不…

C宏定义注意事项

1、带参数的宏与函数的优缺点 2、宏定义一个函数时&#xff0c;需要注意每个参数都需要用括号括起来。 如&#xff1a;#define Min(a,b) ((a)<(b)?(a):(b)) 3、宏定义一年中的秒数 #define SECONDE_OF_YEAR 606024365UL &#xff08;√&#xff09; #define SECONDE_OF_YE…

不要再来北上广深了

大家好&#xff0c;我是写代码的篮球球痴最近我们的一个离职群里面讨论一个问题&#xff0c;就是在北上广深工作的性价比问题&#xff0c;我有几个同事这样描述。一线城市确实会遇到一些机会&#xff0c;也有可能会遇到一些改变命运的机会。不过对于生活来说&#xff0c;一线城…

mogndb 慢查询

0 摘要 在MySQL中&#xff0c;慢查询日志是经常作为我们优化查询的依据&#xff0c;那在MongoDB中是否有类似的功能呢&#xff1f;答案是肯定的&#xff0c;那就是开启Profiling功能。该工具在运行的实例上收集有关MongoDB的写操作&#xff0c;游标&#xff0c;数据库命令等&a…

Linux命令中正则表达式的运用

一、正则表达式简介 事实上&#xff0c;正则表达式不仅适用于linux&#xff0c;多种编程语言中也可以使用到它&#xff0c;因为它实际上是人们对于某种规律的表达方式。 如果要把他的所有应用都讲上的话那这篇文章会变的太长以至于无法阅读&#xff0c;我只介绍他在linux下和几…

程序的内存分配模式(堆栈以及静态存储区,文字常量区,代码区)

程序的内存分配模式 一个由 C/C编译的程序占用的内存分为以下几个部分&#xff1a; 1、栈区&#xff08; stack &#xff09;—由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值 等。其操作方式类似于数据结构中的栈。 2、堆区&#xff08; heap&a…

稚晖君教你制作全球最迷你的自平衡机器人

摘要&#xff1a;Nano是一个小巧可爱的机器人&#xff0c;身高大约10公分&#xff0c;特点是平衡感好&#xff0c;长得很白以及善于卖萌。作为全球最迷你的自平衡机器人&#xff0c;Nano身材虽小&#xff0c;但配置有丰富的传感器—陀螺仪&#xff0c;超声波&#xff0c;Motion…

9.13作业

2、python test.py执行的三个阶段是什么&#xff1f;在哪个阶段识别文件内的python语法&#xff1f; 先运行python解释器&#xff0c;将python文件从硬盘读取到内存&#xff0c;解释执行内存读取的代码&#xff0c;开始识别python语法。 在第3个阶段识别文件内的python语法 3、…

tomcat 6.0环境, 网页超链接,文件下载另存为时,不能识别msi文件类型,另存为只能选htm和所有文件。...

问题: tomcat 6.0环境&#xff0c; 网页超链接&#xff0c;文件下载另存为时&#xff0c;不能识别msi文件类型&#xff0c;另存为只能选htm和所有文件。 解决办法:在 ...\Tomcat 6.0\conf 文件夹下的 web.xml 文件中添加以下类型声明:<mime-mapping><extension>msi…

ARM不同位数系统int字节数区别

32位和64位系统区别及int字节数 一&#xff09;64位系统和32位有什么区别&#xff1f; 1、64bit CPU拥有更大的寻址能力&#xff0c;最大支持到16GB内存&#xff0c;而32bit只支持4G内存 2、64位CPU一次可提取64位数据&#xff0c;比32位提高了一倍&#xff0c;理论上性能会…

我的广州大伯

2021年11月24日我正在办公室和同事调试项目&#xff0c;突然接到我婶的微信语音电话&#xff0c;我婶说广州的大伯过世了&#xff0c;他们现在正在去大伯家的路上。我大伯是爷爷奶奶最大的儿子&#xff0c;爷爷奶奶在世时&#xff0c;家里的很多事情&#xff0c;都会和大伯商量…

VUE 入坑系列 一 双向绑定

html代码<div id"app"><p>{{message}}</p><span>message1</span> <input v-model"message"><span>message2</span> <input v-model"message"></div> View Codejavascript代码var …