python.11

读和写文件

  • open() 将会返回一个 file 对象,基本语法格式如下
open(filename, mode)
  • filename:包含了你要访问的文件名称的字符串值

  • mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®

  • 例子:

#!/usr/bin/python3  
  
# 打开一个文件  
f = open("/tmp/foo.txt", "w")  
  
f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )  
  
# 关闭打开的文件  
f.close()
  • 第一个参数为要打开的文件名。
  • 第二个参数描述文件如何使用的字符。 mode 可以是 ‘r’ 如果文件只读, ‘w’ 只用于写 (如果存在同名文件则将被删除), 和 ‘a’ 用于追加文件内容; 所写的任何数据都会被自动增加到末尾. ‘r+’ 同时用于读写。 mode 参数是可选的; ‘r’ 将是默认值。

文件对象的方法

  • f.read():读取一定数目的数据, 然后作为字符串或字节对象返回
#!/usr/bin/python3  
  
# 打开一个文件  
f = open("/tmp/foo.txt", "r")  
  
str = f.read()  
print(str)  
  
# 关闭打开的文件  
f.close()


结果:
Python 是一个非常好的语言。
是的,的确非常好!!
  • f.readline() :从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行
#!/usr/bin/python3  
  
# 打开一个文件  
f = open("/tmp/foo.txt", "r")  
  
str = f.readline()  
print(str)  
  
# 关闭打开的文件  
f.close()

结果:
Python 是一个非常好的语言
  • f.readlines() :返回该文件中包含的所有行
#!/usr/bin/python3  
  
# 打开一个文件  
f = open("/tmp/foo.txt", "r")  
  
str = f.readlines()  
print(str)  
  
# 关闭打开的文件  
f.close()

结果:
['Python 是一个非常好的语言。\n', '是的,的确非常好!!\n']
  • f.write(string) :将 string 写入到文件中, 然后返回写入的字符数
#!/usr/bin/python3  
  
# 打开一个文件  
f = open("/tmp/foo.txt", "w")  
  
num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )  
print(num)  
# 关闭打开的文件  
f.close()

结果:
29
  • f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数
  • 当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常
>>> f.close()  
>>> f.read()  
Traceback (most recent call last):  
  File "<stdin>", line 1, in ?  
ValueError: I/O operation on closed file
  • 当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件
>>> with open('/tmp/foo.txt', 'r') as f:  
...     read_data = f.read()  
>>> f.closed  
True
  • 如果要改变文件指针当前的位置, 可以使用 f.seek(offset, from_what) 函数
    from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

    • seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
    • seek(x,1) : 表示从当前位置往后移动x个字符
    • seek(-x,2):表示从文件的结尾往前移动x个字符
  • from_what 值为默认为0,即文件开头

>>> f = open('/tmp/foo.txt', 'rb+')  
>>> f.write(b'0123456789abcdef')  
16  
>>> f.seek(5)     # 移动到文件的第六个字节  
5  
>>> f.read(1)  
b'5'  
>>> f.seek(-3, 2) # 移动到文件的倒数第三字节  
13  
>>> f.read(1)  
b'd'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值