Python【文件对象】


Python open() 方法用于打开一个文件,并返回文件对象。
注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

1. 文件打开模式

open() 函数方法

# 常用的两个参数
open(file, mode='r')

有时会涉及文件编码:

open(file, mode='r',encoding='utf-8')
open(file, mode='r',encoding='ANSI')

打开模式:

模式描述
r以只读方式打开文件。这是默认模式。
w以写入的方式打开文件,会覆盖已存在的文件。
x写模式,新建一个文件,如果该文件已存在则会报错。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
b二进制模式。
t文本模式 (默认)。
+打开一个文件进行更新(可读可写)。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

2. 文件对象方法

方法执行操作
f.close()关闭文件。关闭后文件不能再进行读写操作。
f.read([size])从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,返回字符串。
f.readline([size])读取整行,包括 “\n” 字符,读完后指针移动到下一行的行首。返回字符串。
f.readlines([size])读取所有行,包括 “\n” 字符。返回以每行作为元素的列表。
f.write(str)将字符串写入文件,返回的是写入的字符长度。
f.writelines(seq)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。无返回值
f.seek(offset[, from])在文件中移动文件指针,从from(0代表文件起始位置(默认值),1代表当前位置,2代表文件末尾)偏移offset个字节。如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。
f.tell()返回当前在文件中的位置

3. with语句

为了保证无论是否出错都能正确地关闭文件,我们可以使用 try … finally 来实现:

import os
realpath = os.path.dirname(os.path.realpath(__file__))

try:
    f = open(os.path.join(realpath,'1.txt'),'r')
    try:
        代码
    finally:
        f.close()
except Exception as err:
    print('[ERROR:]{}'.format(err))

但是每次都这么写实在太繁琐,所以,Python 引入了 with 语句来自动帮我们调用 close() 方法:

with open('/path/to/file', 'r') as f:
    代码

4. 读取文件指定行

一、linecache模块函数
1、linecache.getline(filename, lineno)
从文件中读取内容,得到第 lineno行
2、linecache.clearcache()
清除现有的文件缓存。
3、linecache.checkcache([filename])
缓存中的文件可能已在磁盘上更改,并且需要更新的版本

5. 获取文件编码方式

import os
import chardet

realpath = os.path.dirname(os.path.realpath(__file__))
filedet = os.path.join(realpath,'123.csv')

def get_File_Code(filepath):
    with open(filepath,'rb') as f:
        data = f.read()
        print('获取到的文件编码为:{}'.format(chardet.detect(data)['encoding']))

get_File_Code(filedet)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值