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
Python文件操作:文件的打开关闭读取写入的更多相关文章
-
python读写操作文件
with open(xxx,'r,coding='utf-8') as f: #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时 ...
-
文件操作mode学习总结-----Python学习总结【第四篇】:Python之文件操作(文件、正则、json、pickle)
非常全的博客,防丢链接参考https://www.cnblogs.com/madsnotes/articles/5521551.html 1.文件操作 1.1 操作流程 1)文件打开 2)文件操作 3 ...
-
在Python中操作文件之truncate()方法的使用教程
在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...
-
根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序
利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...
-
linux文件操作篇 (二) 打开和关闭文件
2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> 头文件 i ...
-
PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink
php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...
-
python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...
-
python 文件操作: 文件操作的函数, 模式及常用操作.
1.文件操作的函数: open("文件名(路径)", mode = '模式', encoding = "字符集") 2.模式: r , w , a , r+ , ...
-
python关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 功能 说明 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirna ...
随机推荐
-
jQuery-1.9.1源码分析系列(九) CSS操作
jquery.fn.css获取当前jQuery所匹配的元素中第一个元素的属性值[$(…).css(cssName),注意这个cssName可以是数组]或给当前jQuery所匹配的每个元素设置样式值[$ ...
-
GitLab服务器搭建及配置
一.服务器环境 操作系统:CentOS release 6.5 (Final) GitLab版本: GitLab-shell:2.0.1 Ruby version: ruby 2.1.2p95 (20 ...
-
通过 Redis 实现 RPC 远程方法调用(支持多种编程语
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/101.html?1455869487 我发现经常研究并且为之兴奋的一件事就 ...
-
no CONFIG_BQL
[PATCH] net: make CONFIG_BQL actually end user configurable Without the defining string or help text ...
-
[PAT]求集合数据的均方差(15)
#include "stdio.h" #include "malloc.h" #include "math.h" int *getinput ...
-
详解Paint的setPathEffect(PathEffect effect)
一.setPathEffect() 这个方法一看就和path有关,顾名思义,它就是给path设置样式(效果)的.PathEffect这个路径效果类没有具体的实现,效果是由它的六个子类实现的: 这六个子 ...
-
1002: A+B for Input-Output Practice (II)
问题描述: http://acm.wust.edu.cn/problem.php?id=1002&soj=0 代码实现: import java.util.Scanner; public cl ...
-
Oracle wrap 测试的一些细节问题
今天在做 wrap 的测试实验的时候,出现一个很奇怪的现象,就是加密不成功.具体表现为:1.加密后的文件大小为0kb. 2.加密后的文件仍然可视. 具体测试步骤如下: D:\Just4work\som ...
-
JVM内存概览与GC初步
一.JVM内存空间概览 Java虚拟机使用的内存块包含 栈空间Stack (虚拟机栈.本地方法栈).堆空间 Heap Memory .永久区 Perm Gen(related to method ar ...
-
js判断是否使用的是微信浏览器
代码如下: function is_weixin() { var ua = navigator.userAgent.toLowerCase(); return ua.match(/MicroMesse ...