python3 文件操作

xiaoxiao2021-02-28  93

下面介绍文件的一些基本操作 打开文件: file_object = open(file_name, access_mode=’r’, buffering=-1)

file_name:是包含要打开的文件名字的字符串, 它可以是相对路径或者绝对路径. access_mode:是一个代表打开文件模式的字符串,下表是字符串的枚举及含义。

文件模式操作r以读方式打开rU 或 Ua以读方式打开, 同时提供通用换行符支持 (PEP 278)w以写方式打开 (必要时清空,不存在时则创建新文件)a以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+以读写模式打开w+以读写模式打开 (参见 w )a+以读写模式打开 (参见 a )rb以二进制读模式打开wb以二进制写模式打开 (参见 w )ab以二进制追加模式打开 (参见 a )rb+以二进制读写模式打开 (参见 r+ )wb+以二进制读写模式打开 (参见 w+ )ab+以二进制读写模式打开 (参见 a+ )

buffering:其中 0 表示不缓冲, 1表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小. 不提供该参数或者给定负值代表使用系统默认缓冲机制

先介绍下os模块的一些属性吧 现在三种主流操作系统的换行符及路径分格符都不尽相同,os模块会根据不同的操作系统得到对应的值 os.linesep 代表换行符

下面来实际操作下吧:

#!/usr/bin/env python "文件操作" import os #以读写方式打开文件 fobj = open('test.txt','w+') if (fobj.writable()): # write 向文件中写入字符串 # 该方法会返回写入的字符数 fobj.write('I am HanMeiMei%s' % os.linesep) fobj.write('I love you %s' % os.linesep) # writelines 向文件中写入列表的所有数据,也可以是一个字符串 fobj.writelines('writelines %s' % os.linesep) fobj.writelines([ 'writelines1 %s' % os.linesep, 'writelines2 %s' % os.linesep, ]) if (fobj.readable()): # 注意:写文件的时候要慎重用seek # 文件的字符数 print('写入文件的字符为' % fobj.tell()) # 移动文件指针到文件的起始位置 if (fobj.seekable()): fobj.seek(0) # 读取文件全部内容 read 中可以传入要读取的字符数 print('文件的内容为:%s' % fobj.read()) # 如果还想继续读取文件就需要移动文件指针到文件的起始位置 if (fobj.seekable()): fobj.seek(0) # 读取第一行文件 print('第一行的内容为: %s' % fobj.readline()) # 将第二行到文件末尾的内容读入到列表中 print('读到文件的列表为:%s' % fobj.readlines()) # 还有一种最高效的办法是进行文件的迭代 if (fobj.seekable()): fobj.seek(0) #移动文件指针到文件的起始位置 for line in fobj: print(line,end='') # 为什么没有调用flush呢,其实 seek 和 tell 都会将缓冲区的数据写入文件的 # 文件的属性 fname = fobj.name # 文件名 fencoding = fobj.encoding # 文件的字符集 fclose = fobj.closed #文件是否已关闭 fmode = fobj.mode #文件的打开模式 fnewlines = fobj.newlines #文件的换行符 ferrors = fobj.errors # 文件的错误级别
转载请注明原文地址: https://www.6miu.com/read-34004.html

最新回复(0)