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:     指针在文件末尾

以下为具体事例:

#
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 关于文件的操作的更多相关文章

  1. python对文件的操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  2. python里文件读写操作

    文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...

  3. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  4. python关于文件的操作

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  5. python进阶--文件读写操作

    Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 ...

  6. Python中文件的操作

    文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, new ...

  7. day9 python学习 文件的操作 读 写 seek

    文件的操作 1   文件的打开操作: 文件句柄 = open('文件路径', '模式') f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径 ...

  8. Python读写文件实际操作的五大步骤

    Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有所帮助,下面我们就详细介绍其应用程序. 一.打开文件 Pytho ...

  9. python基础--文件的操作

    #r w a 文件读取操作 默认打开为读操作 #f=open('coldplay.txt','r',encoding="utf-8")#open函数默认已系统编码方式打开windo ...

  10. Python对文件的操作(转)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...

随机推荐

  1. Centos yum 命令行 安装KDE Desktop

    1:修改yum源为本地源 (见相关随笔:centos 配置本地yum源) 2:# yum groupinstall "X Window System" ← 安装基本的X系统组件# ...

  2. i3wm 入门

    安装 所用Linux版本为kali-rolling,直接安装 apt install i3 设置为xinit的启动对像 修改 ~/.xserverrc #!/bin/sh exec /usr/bin/ ...

  3. cocos2dx创建win32项目一般步奏

    1.导入一个新项目步奏:解决方案:右键->添加->添加现有项目->添加依赖项目libCocoStudioD:\work\CannonDefender\cocos2d\cocos\ed ...

  4. mysql连接拍错总结

    1. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060)   ? 关闭网络防火墙.

  5. java Scanner中next和nextLine()区别

    next(): 1.一定要读取到有效字符后才可以结束输入. 2.对输入有效字符之前遇到的空白,next() 方法会自动将其去掉. 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符. ne ...

  6. 什么是pytorch(3神经网络)(翻译)

    神经网络 torch.nn 包可以用来构建神经网络. 前面介绍了 autograd包, nn 依赖于 autograd 用于定义和求导模型. nn.Module 包括layers(神经网络层), 以及 ...

  7. gitlab部署步骤+汉化

    系统环境centos7 下载gitlab安装包 https://packages.gitlab.com/gitlab/gitlab-ce 我下载的版本是 gitlab-ce-11.1.4-ce.0.e ...

  8. [JAVA]对象的别名问题

    对于JAVA的基本数据类型,a=b就是把b的内容复制给a.若接着又修改了a,对b是没有影响的. 但是在为对象“赋值”的时候,情况发生了变化.对一个对象进行操作时,我们真正操作的是对象的引用. 下面对两 ...

  9. 第一章 C#入门 (Windows窗体应用程序)(一)

    我的第一个窗体应用程序(一) [案例说明]  在文本框中显示一行文字“Hello C#!”,单击[显示]按钮后在文本框中显示文字:单击[清除]按钮后清除文本框中的内容. [案例实现步骤] 1.新建项目 ...

  10. 初识DMA

    初识DMA 关于AXI4-Memory Map 与 AXI4-Stream之间的转换: 查阅UG1037 重点关注DataMover这一块 此图似乎有错误之处,需要再次确认.