浅谈PYTHON 关于文件的操作

作者:Yang-hao 时间:2022-06-07 19:54:58 

1.打开文件:

f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')
以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-8

2.读写文件:

data=f.read()  # 读文件

f.write()    # 写文件

3.关闭文件:

f.close()

4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件


with open('a.txt',mode='rt',encoding='utf-8') as f:
data=f.read()
print(data)

with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write('hello world')

5.控制文件读写的操作:

r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件
w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头
a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容

6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)

t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encoding
b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding

7.文件的拷贝


with open ('a.txt',mode='rb') as af,\
open('b.txt',mode='wb') as bf:
data=af.read
f.write(data)

执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式

8.文件的修改:

文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的; 文件的修改有俩种方式,分别适用于不同的情景

方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中;这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 View


with open('a.txt',mode='rt',encoding='utf-8') as f:
data=f.read()
data_new=data.replace('yang', 'yv')
with open('b.txt',mode='wt',encoding='utf-8')as p:
p.write(data_new)

方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件


import os
with open('b.txt',mode='rt',encoding='utf-8') as f,\
open('.b.txt.swap',mode='wt',encoding='utf-8') as p:
for line in f:
p.write(line.replace('yv','yang'))
# 调用replace方法,将源文件中的'yv',换成'yang'
os.remove('b.txt')
os.rename('.b.txt.swap','b.txt')

9. 文件的阶段:truncate(n)

将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容

10.文件内指针的移动

f.seek():  指针的移动是以字节为单位的
seek 有三种模式:

0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用
1:指针在当前位置
2:指针在文件末尾

以下为具体事例:


# 0
with open('a.txt',mode='rt',encoding='utf-8')as f:
f.seek(3,0)
print(f.tell()) # 指针当前位置
print(f.read()) # 从指针后读出所有内容

# 1 参照指针当前位置
with open('a.txt',mode='rb')as f:
f.read(2)
f.seek(4,1)
print(f.tell())
print(f.read().decode('utf-8'))

# 2 参照文件末尾
with open('a.txt',mode='rb')as f:
f.seek(-5,2)
print(f.tell())
print(f.read().decode('utf-8'))

当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:


# 另一个文件进行写操作,写的代码如下:

with open('a.txt',mode='at',encoding='utf-8')as f:
f.write('hello world\n')

# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:
import time
with open('a.txt',mode='rb')as f:
f.seek(0,2)
while True:
line=f.readline() # readline 可以读取没有内容的部分
# print(line.decode('utf-8'))
if len(line)==0:
time.sleep(0.1)
else:
print(line.decode('utf-8'))

以上所述是小编给大家介绍的PYTHON 关于文件的操作详解整合网站的支持!

来源:https://www.cnblogs.com/yang220/p/10085345.html

标签:PYTHON,文件操作
0
投稿

猜你喜欢

  • Python 简单计算要求形状面积的实例

    2022-10-19 09:02:33
  • go语言 xorm框架 postgresql 的用法及详细注解

    2024-04-25 15:26:45
  • Python学习笔记(一)(基础入门之环境搭建)

    2021-12-26 12:51:40
  • python笔记:mysql、redis操作方法

    2024-01-15 02:16:46
  • Mysql索引性能优化问题解决方案

    2024-01-27 12:14:41
  • Django框架静态文件处理、中间件、上传文件操作实例详解

    2021-03-07 14:31:04
  • 微信小程序使用navigator实现页面跳转功能

    2024-04-25 10:36:14
  • SQL SERVER的字段类型介绍

    2008-05-23 13:27:00
  • MySQL插入时间差八小时问题的解决方法

    2024-01-28 22:00:09
  • eWebEditor 上传文件提示格式不正确的解决方法

    2022-10-08 03:21:51
  • Python面向对象中类(class)的简单理解与用法分析

    2021-01-05 00:07:37
  • Golang协程池gopool设计与实现

    2024-05-28 15:23:01
  • OpenCV实现常见的四种图像几何变换

    2022-11-08 11:20:50
  • python备份文件的脚本

    2023-12-14 10:52:02
  • Python决策树分类算法学习

    2023-01-28 17:27:05
  • 利用python将 Matplotlib 可视化插入到 Excel表格中

    2023-09-26 09:03:25
  • javascript结合ajax读取txt文件内容

    2024-04-30 10:14:58
  • PyTorch 使用torchvision进行图片数据增广

    2023-06-19 23:09:10
  • echarts折线图流动特效的实现全过程(非平滑曲线)

    2024-05-02 16:28:55
  • Python 命令行非阻塞输入的小例子

    2023-12-09 19:48:29
  • asp之家 网络编程 m.aspxhome.com