Python open文件操作

Python open() 函数

  python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

函数语法
open(name[, mode[, buffering]])

参数说明:

  • name : 一个包含了你要访问的文件名称的字符串值。

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

  • buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

打开文件的不同模式:
这里写图片描述

file 对象方法
  • file.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回”“(空字串)

  • file.readline() 返回一行

  • file.readlines([size]) 返回包含size行的列表,size 未指定则返回全部行

  • for line in f: print line #通过迭代器访问

  • f.write(“hello\n”) 如果要写入字符串以外的数据,先将他转换为字符串,该函数的参数为字符串

  • f.writelines(sequence)#该函数的参数是序列,比如列表,它会迭代帮你写入文件。

  • f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

  • f.seek(偏移量,[起始位置]) 用来移动文件指针.【偏移量:单位:比特,可正可负
    起始位置:0-文件头,默认值;1-当前位置;2-文件尾】

  • f.close() 关闭文件

示例

  • 比较两个文本中字段不同的行
# 比较两个文件,如果不同,显示不同内容的行号,并将显示结果存在另一个文件里
def compare(file1,file2):
    Same = True
    count = 1
    rows = 0
    f1 = open(file1)
    f2 = open(file2)
    result = open('/Users/cailei/Cai_Lei/result.txt', 'w')
    for line1 in f1.readlines():
        line2 = f2.readline()
        if line1 != line2:
            rows+=1
            Same = False
            result.writelines('第%d行不同\n'%count)
        count+=1
    result.close()
    f1.close()
    f2.close()
    if Same==False:
        print('两个文档有%d不同之处,具体请看result.txt'%rows)
    else:
        print('两个文档完全相同')

compare('/Users/compare1.txt','/Users/compare2.txt')
  • 实现类似WORD中词汇替换的功能
#找到文件中关键词oldword,并用新的词newword替换
def replace_words(file,oldword,newword):
    content = ''
    f = open(file,'r')
    f.seek(0,0)
    for lines in f.readlines():
        if oldword in lines:
            lines_new=lines.replace(oldword,newword)
            content+=lines_new
    f = open(file,'w')
    f.write(content)
    f.close()
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值