使用python打开和修改文件--open功能

一、基本格式和模式

open: 将导入的文件生成文件对象(file object) 并返回该文件对象。 python自带,不需要import任何library。

  • 格式:file = open(filepath,mode) 。mode可以为’r’, ‘w’, ‘a’。

可使用的模式:r(只读),w(创建新文件并修改),a(在已存在的文件上进行修改)

  • 实例1:file = open(‘data.xlsx’, ‘r’), 只读模式打开名为data的文件,如该文件不存在则报错。
  • 实例2:file = open(‘data.xlsx’, ‘w’),创建一个名为data的新文件,可对该文件的内容进行修改。如果已经存在同名文件,则覆盖该文件。
  • 实例3:file = open(‘data.xlsx’, ‘a’),创建一个名为data的新文件,可对该文件的内容进行修改。如果已经存在同名文件,则打开该同名文件进行修改。
二、file对象可使用的方法
  • file.name:获取文件名
  • file.mode:获取文件的打开模式
  • file.close: 关闭文件
  • file.closed: 判断文件是否已经关闭,返回True or False
(一)在只读模式’r’下可使用的
  • file.read(n):返回文件对象前n个字符(注:换行符也算一个字符)。如果不写n,则返回文件对象中的全部内容。需注意,如之前运行了.read(n)或者.readline(n),则文件开始的位置是上次读取结束的后一位。
  • file.readline(n): 返回文件对象里的第一行的前n个字符;如果不写n,则返回文件对象第一行全部内容;如果n大于第一行字符个数,则返回第一行全部内容。需注意,第一次使用readline时,第一行默认为第一个换行符之前的内容,如果连续使用readline,则会依次往后推,详见示例。
  • file.readlines(): 获取文件对象里的所有内容,并返回一个存储了文件对象内容的列表,默认每个换行符对应列表里的一个元素。

.read(n) vs .readline(n):与.read()不同,readline()只能读取一行的内容。如果n大于该行字符个数,.read(n)会继续读取下一行,.readline()不会继续读下一行。

(二)在修改模式‘w’和’a’下可使用的
  • file.write()
  • 但是不能使用.read(), .readline(), .readlines()等只读模式下的方法。
三、实际操作

特别注意!要记得关闭被打开的文件。

一般使用with open as filename: 格式来操作文件。程序会执行with下面的代码块,执行完代码块之后会自动关闭文件,无需写file.close().

(一)读写模式下(w)
lines = ['hello,\n', 'my name is becky.']
#创建一个名为example的新文本文件
with open('data/example.txt', 'w') as file1:
    #每次写入一行数据(\n为换行符)
    file1.write('This is a new exercise.\n')
    #或者利用循环写入多行数据
    for line in lines:
        file1.write(line)
#【结果】
#在该程序所在文件夹创建了一个新文件example.txt,该文件里的内容是:
#This is a new exercise
#hello, 
#my name is becky. 
(二)读写模式下(a)
with open('data/example.txt', 'a') as file1:
    file1.write('This is a new exercise.\n')
    file1.write('This is the last sentence.\n')
#【结果】
#在该程序所在文件夹的文件example.txt里的内容应变为:
#This is a new exercise    
#hello, 
#my name is becky. This is a new exercise.
#This is the last sentence.
(三)只读模式下(r)
with open('data/example.txt', 'r') as file1
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值