python的file函数_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 openedfilefo.close()

结果:

Name of thefile: file.txt

Line No0 - 1Line No1 - 2Line No2 - 3Line No3 - 4fiel 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 info.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

python21python32

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值