Python文件操作:文件的打开关闭读取写入

Python文件操作:文件的打开关闭读取写入

一、文件的打开关闭

Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作。

文件操作都分为以下几个步骤:

1.打开文件。

2.操作文件:读/写。

3.关闭文件。

操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件。open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象。打开后的文件只能在当前程序操作,不能被另一个进程占用。操作之后一定将文件关闭,进程将释放对文件的控制,使文件恢复存储状态,这时,另一个进程将能够操作此文件。

open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。其中,file对象使用 open 函数来创建,file对象常用的函数如下:

file.close():关闭文件。关闭后文件不能再进行读写操作。

file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

file.fileno():返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

file.isatty():如果文件连接到一个终端设备返回 True,否则返回 False。

file.next():返回文件下一行。

file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。

file.readline([size]):读取整行,包括 "\n" 字符。

file.readlines([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

file.seek(offset[, whence]):设置文件当前位置。

file.tell():返回文件当前位置。

file.truncate([size]):截取文件,截取的字节通过size指定,默认为当前文件位置。

file.write(str):将字符串写入文件,返回的是写入的字符长度。

file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

文件打开模式如下:

t:文本模式 (默认)。

x:写模式,新建一个文件,如果该文件已存在则会报错。

b:二进制模式。

+:打开一个文件进行更新(可读可写)。

U:通用换行模式(不推荐)。

r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+:打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

二、文件的读写

1.Python中读取文件的相关方法:

<file>.read():一次读取文件所有内容,返回一个字符串或字节流。

<file>.read(size):每次最多读取指定长度的内容,返回一个字符串或字节流。在Python3中size指定的是字符长度。

<file>.readlines():一次读取文件所有内容,按行返回一个列表。

<file>.readline():每次只读取一行内容。

我们来读取一个存放在D盘的名为“123.txt”的文本文件,该文件的字符编码为utf-8,其中包含的文本是北岛的诗歌《走吧》,如下所示。

# 第一步:(以只读模式)打开文件

f = open(‘D:/123.txt‘, mode=‘r‘, encoding=‘utf-8‘)  

# 第二步:读取文件内容

print(f.read())

# 第三步:关闭文件

f.close()

运行结果:

2.Python中写入文件的相关方法:

<file>.write():向文件写入一个字符串或字节流。

<file>.writelines():将一个元素全为字符串的列表写入文件。

<file>.seek(offset):改变当前操作指针的位置,offset的值:

0——文件开头

1——当前位置

2——文件结尾

注意:Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符(‘\n‘)。

我们创建一个文本文件用来写入文本,该文件的字符编码为utf-8,如下所示。

# 第一步:(以只写模式)打开文件

f = open(‘D:/123.txt‘, mode=‘w‘, encoding=‘utf-8‘)

# 第二步:写入文件内容

f.write( "人生若只如初见,何事秋风悲画扇。")

# 第三步:关闭文件

f.close()

运行结果:

也可以向文件写入一个列表,打印输出结果,如下所示。

f = open(‘D:/123.txt‘, mode=‘w+‘, encoding=‘utf-8‘)   

ls=[‘一本正经‘,‘两厢情愿‘,‘三顾茅庐‘,‘四海为家‘]  

f.writelines(ls)

#写入内容在文件操作指针之前,用seek(0)将文件操作指针返回到文件开始使其顺利向后读入并打印内容,否则打印内容无法显示

f.seek(0)

for line in f:

print(line)

f.close()

运行结果:

参考资料:

https://www.runoob.com/python/python-files-io.html

原文地址:https://www.cnblogs.com/BIXIABUMO/p/11749843.html

时间: 2024-08-15 22:00:18

Python文件操作:文件的打开关闭读取写入的相关文章

python读写操作文件

with open(xxx,'r,coding='utf-8') as f:   #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时对多个文件的上下文进行管理,即:with open('log1') as obj1, open('log2') as obj2: f.tell          #获取指针位置 f.seek(1)   #调整指针位置 f.writ()     #往文件里面些东西  并切指针到最后 r.read() 

linux文件操作篇 (二) 打开和关闭文件

2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>  头文件 int open(const char *pathname, int flags); 打开一个文件 int close(int fildes); 关闭一个文件 intopen(constchar*pathname, intflags);//const char *pathname 是要打开的文件路径//int

python基本文件操作(文件输入和输出)

文件输入输出中常用的文件对象方法: open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作 readline: 读取一行你给哦如果您包括结尾的换行符在内 write: 将数据写入文件中 close: 关闭文件对象:   举例:读取E盘中的work.txt文件 f = open('work.txt') line  =f.readline() print(line) f.close() 如果给readline设置一个参数 n 则读取n个字符 不设置 则只读取一行包括结尾的换行符

python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录

Python:操作文件

python操作文件库不需要安装其他module,文件操作类库是python语言自身支持的操作. 判定文件是否存在:os.path.isfile(filePath) import os import sys if __name__=='__main__': filePath='d:\\FTP\\HUAWEI\\1.txt' if os.path.isfile(filePath): #os.remove() will remove a file. #os.rmdir() will remove a

Python open操作文件

操作文件 # coding=utf-8 支持中文 """ China Japan France England """ f = open("record.txt", "a+") # 读写追加 content = f.readline() print content content = f.readlines() print content f.write('\nGerman') f.close() &quo

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);) 1获取文件信息 在知道文件相对路径的情形,下面代码可以获取文件的详细信息 1 public static void fileinfo(string Path) 2 { 3 Path = S

java _io_ File类文件操作--文件存在

File f=new File("C:/Users/10853/eclipse-workspace/hell/linux学习路线.png"); 文件对象操作方法: f2.exists(); //文件是否存在 f2.isDirectory(); //文件是否是目录 f2.isFile(); //是否是文件 new Date(f2.lastModified());//文件最后修改日期 f2.length(); //文件大小 f2.getName(); //文件名 f2.getPath();

C# 操作地址 从内存中读取写入数据(初级)

本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光地址都是变的, 唯一不变的基址1, 我们要通过CE工具找到基址1的地址, 可以算出阳光的地址. 基址2的地址 = 基址1中的值 + 偏移1; 阳光的的地址 = 基址2中的值 + 偏移2; 以下为简单示例:  窗口界面一个按钮 和 一个定时器 using System; using System.Co