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

时间:2022-09-28 07:37:11

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,其中包含的文本是北岛的诗歌《走吧》,如下所示。

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

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

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

# 第二步:读取文件内容

print(f.read())

# 第三步:关闭文件

f.close()

运行结果:

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

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()

运行结果:

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

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

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()

运行结果:

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

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

参考资料:

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

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

  1. python读写操作文件

    with open(xxx,'r,coding='utf-8') as f:   #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时 ...

  2. 文件操作mode学习总结-----Python学习总结【第四篇】:Python之文件操作&lpar;文件、正则、json、pickle&rpar;

    非常全的博客,防丢链接参考https://www.cnblogs.com/madsnotes/articles/5521551.html 1.文件操作 1.1 操作流程 1)文件打开 2)文件操作 3 ...

  3. 在Python中操作文件之truncate&lpar;&rpar;方法的使用教程

    在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...

  4. 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序

    利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...

  5. linux文件操作篇 &lpar;二&rpar; 打开和关闭文件

    2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>  头文件 i ...

  6. PHP文件操作&comma;多行句子的读取&comma;file&lpar;&rpar;函数&comma;file&lowbar;get&lowbar;contents&lpar;&rpar;函数&comma;file&lowbar;put&lowbar;contents&lpar;&rpar;函数&comma;is&lowbar;file&comma;统计网站pv &lpar;访问量&rpar;&comma;文件的复制 copy&comma;文件重命名 rename&comma;删除文件 unlink

    php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...

  7. python 关于操作文件的相关模块(os&comma;sys&comma;shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...

  8. python 文件操作&colon; 文件操作的函数&comma; 模式及常用操作&period;

    1.文件操作的函数: open("文件名(路径)", mode = '模式', encoding = "字符集") 2.模式: r , w , a , r+ , ...

  9. python关于操作文件的相关模块(os&comma;sys&comma;shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 功能 说明 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirna ...

随机推荐

  1. jQuery-1&period;9&period;1源码分析系列(九) CSS操作

    jquery.fn.css获取当前jQuery所匹配的元素中第一个元素的属性值[$(…).css(cssName),注意这个cssName可以是数组]或给当前jQuery所匹配的每个元素设置样式值[$ ...

  2. GitLab服务器搭建及配置

    一.服务器环境 操作系统:CentOS release 6.5 (Final) GitLab版本: GitLab-shell:2.0.1 Ruby version: ruby 2.1.2p95 (20 ...

  3. 通过 Redis 实现 RPC 远程方法调用&lpar;支持多种编程语

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/101.html?1455869487 我发现经常研究并且为之兴奋的一件事就 ...

  4. no CONFIG&lowbar;BQL

    [PATCH] net: make CONFIG_BQL actually end user configurable Without the defining string or help text ...

  5. &lbrack;PAT&rsqb;求集合数据的均方差(15)

    #include "stdio.h" #include "malloc.h" #include "math.h" int *getinput ...

  6. 详解Paint的setPathEffect&lpar;PathEffect effect&rpar;

    一.setPathEffect() 这个方法一看就和path有关,顾名思义,它就是给path设置样式(效果)的.PathEffect这个路径效果类没有具体的实现,效果是由它的六个子类实现的: 这六个子 ...

  7. 1002&colon; A&plus;B for Input-Output Practice &lpar;II&rpar;

    问题描述: http://acm.wust.edu.cn/problem.php?id=1002&soj=0 代码实现: import java.util.Scanner; public cl ...

  8. Oracle wrap 测试的一些细节问题

    今天在做 wrap 的测试实验的时候,出现一个很奇怪的现象,就是加密不成功.具体表现为:1.加密后的文件大小为0kb. 2.加密后的文件仍然可视. 具体测试步骤如下: D:\Just4work\som ...

  9. JVM内存概览与GC初步

    一.JVM内存空间概览 Java虚拟机使用的内存块包含 栈空间Stack (虚拟机栈.本地方法栈).堆空间 Heap Memory .永久区 Perm Gen(related to method ar ...

  10. js判断是否使用的是微信浏览器

    代码如下: function is_weixin() { var ua = navigator.userAgent.toLowerCase(); return ua.match(/MicroMesse ...