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

1    file.close()

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

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

# -*- coding: UTF- -*-

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

2    file.flush()

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

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

# -*- coding: UTF- -*-

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

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

# -*- coding: UTF- -*-

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

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

# -*- coding: UTF- -*-

# 打开文件
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():
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 -
Line No -
Line No -
Line No -
fiel is end

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

# -*- coding: UTF- -*-

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

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

# -*- coding: UTF- -*-

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

8    file.readlines([sizeint])

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

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

# -*- coding: UTF- -*-

# 打开文件
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
读取的数据为:
读取的数据为:

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

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

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

# -*- coding: UTF- -*-

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

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

# -*- coding: UTF- -*-

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

# -*- coding: UTF- -*-

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

12    file.write(str)

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

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

# -*- coding: UTF- -*-

# 打开文件
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- -*-

# 打开文件
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
python3

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

python之file 方法的更多相关文章

  1. 15.python文件(file)方法详解

    文件的基本操作 文件读写: 文件的读写满足以下3个步骤: 1).打开文件 2).操作数据(读.写) 3).关闭文件 --> 不要忘记 1).打开文件: python的open() 方法用于打开一 ...

  2. Python之file方法

        def fileno(self): #  文件描述符               def flush(self): #  刷新文件内部缓冲区             def isatty(se ...

  3. 使用python原生的方法实现发送email

    使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...

  4. Python中sorted()方法

    Python中sorted()方法的用法 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.i ...

  5. [Python]读写文件方法

    http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...

  6. python内置方法

    1. 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是 ...

  7. 在.Net Framework中调用Python的脚本方法 (以VB和C#为例)

    某个项目中涉及到这样一个情景: VB/C#写的原始项目要调用Python的一些方法完成特殊的操作, 那么这就涉及到了,在.Net Framework中如何调用Python的脚本方法. 具体步骤流程如下 ...

  8. 【转】Python的神奇方法指南

    [转]Python的神奇方法指南 有关Python内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Picklin ...

  9. python之魔法方法介绍

    1.1. 简介 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加“魔法”的特殊方法. 它们经常是两个下划线包围来命名的(比如 __init__ , __lt__ ) ...

随机推荐

  1. 互斥锁lock、信号量semaphore、事件Event、

    1.互斥锁lock 应用在多进程中互斥所lock:互斥锁是进程间的get_ticket互相排斥进程之间,谁先枪占到资源,谁就先上锁,等到解锁之后,下一个进程在继续使用.# 语法: 上锁: lock.a ...

  2. C# 打包安装部署 属性中找不到 查找目标或打开文件位置

    用第三方工具OrcaMis (一个可以修改msi文件的工具)来实现的 最后我又试了几次,以为是再程序打包的时候设置有问题,结果都没有找到原因,没有办法只有需求网络资源,网络上有朋友说VS创建的快捷方式 ...

  3. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总

    2018年Spring Boot 2.x整合微信支付在线教育网站高级项目实战视频课程 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在 ...

  4. Lucence简单学习---1

    package cn.itheima.lucene; import java.io.File; import java.util.ArrayList; import java.util.List; i ...

  5. Jmeter使用实践-接口diff测试

    Jmeter使用实践-接口diff测试 大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmete ...

  6. MATLAB学习(六)绘图图形功能

    >> x=0:.1:2*pi;plot(x,sin(x),x,cos(x))                               >> plot(x,sin(x),'p ...

  7. Spring Boot启动的报错 Stopping service [Tomcat]

    我遇到的问题是项目中使用java_websocket的WebSocketClient,由于性能要求,需要再Controller直接继承WebSocketClient, 在项目启动过程中调试进入spri ...

  8. playbook文件内容解释

    [root@node1 playbook]# cat nginx.yml - hosts: test \\主机组,要和nginx.yml在同一个目录下 remote_user: root \\远端执行 ...

  9. Java数组(2):数组与泛型

    通常,数组与泛型不能很好的结合,你不能实例化具有参数化类型的数组.擦除会移除参数类型信息,而数组必须知道它们所持有的确切类型.但是我们可以参数化数组本身. import java.util.Array ...

  10. 随便写的Gost安装脚本,作用你懂的,目前只支持CentOS,可以在Aliyun ECS中使用

    服务器 执行下面命令: curl -L aux.pub/gost | bash 或者: curl -L https://gist.githubusercontent.com/inrg/03da1ded ...