文件修改操作:

文件的修改操作:文件并没有修改操作,实际是将一个编写的新文件覆盖了原有的文件

替换文件中的某个内容:

with open('old.txt','r',encoding='utf-8') as read_f,\

  open('.old.txt.swap',swap,'w',encoding='utf-8') as write_f:

  msg=read_f.read()

  msg=msg.replace('alex','SB')

  print(msg)

  wirte_f.write(msg)

os.remove('old.txt')  #删除原有的文件

os.rename('.old.txt.swap','old.txt')  #将交换文件替换为原有的文件

然后再替换回来:

with open('old.txt','r',encoding='utf-8') as read_f,\

  open('.old.txt.swap',swap,'w',encoding='utf-8') as write_f:

  for line in read_f:

    if 'SB' in line:

      line=line.replace('SB','alex')

    write_f.write(line)

os.remove('old.txt')  #删除原有的文件

os.rename('.old.txt.swap','old.txt')  #将交换文件替换为原有的文件

字符编码:把人类的字符翻译成计算机能认识的数字。

字符编码表:就是一张字符与数字对应关系的表

eg:

  ascii

   gbk

  utf-8

   unicode unicode---->encode('utf-8')------>bytes

   bytes------>decode('utf-8')------>unicode

原则:字符以什么格式编译的,就要以什么格式解码。
  python3中字符串分为两种: x='egon' 存成unicode y=x.encode('utf-8')存成bytes
  python2中字符串分为两种: x=u'egon'与python3中的字符串是一样的 y='alex'与python3中的bytes一样

f=open('a.txt','r',encoding='utf-8')

  #当文件不存在的时候,不会创建文件,会报错 f.read()

  #向操作系统发起调用

b模式:即直接从硬盘中读取bytes

  f=open('a.txt','rb') print(f.read().decode('utf-8'))
写模式: f=open('a.txt','w',encoding='utf-8')

  w文本模式的写,文件存在则清空,不存在的话则创建

  f.write('aaaa\n') f.write('bbb\n')

#写一行 f.newlines('111111\n','sdsa\n')

#写多行 a文本追加模式,文件不存在创建,文件存在将光标移到最后一行 f=open('b.txt','a',encoding='utf-8')

r+,w+,a+ 分别代表读的时候可以写,写的时候可以读,追加的时候可以读。
  rb模式即直接从硬盘中读取bytes f=open('a.txt','rb') print(f.read())

wb模式,写入的时候以二进制写入 f=open('a.txt','wb') f.write('你真红'.encode('utf-8'))
  对于图片或者对于其他不是字符文件的复制操作:

f=open('test.jpg','rb')
print(f.read())
with open('test.jpg','rb') as read_f,open('test1.jpg','wb') as write_f:
for line in read_f:
write_f.write(line)

#写一个小程序

import sys
#python3 copy.py source.file target.file
if len(sys.argv) < 3:
print('Usage:python3 copy.py source.file target.file')
sys.exit()
with open(r'%s'%sys.argv[1],'rb') as read_f,open(r'%s'%sys.argv[2],'wb') as write_f:
for line in read_f:
write_f.write(line)

因为在window中涉及路径的问题,当存在\的时候可能会使某些字符失效。所以就利用 r 来进行转义。

用法: r%s %sys.argv 这样

文件内光标的移动:

  1,文件打开方式为文本模式打开时,代表读取三个字符。

  f=open('a.txt','r')

  print(f.read(3))

  2,文件打开方式为b模式时,代表读取三个字节。(读取的不是3的整数倍的时候,不能解码)

  f=open('a.txt','rb')

  print(f.read(6).decode('utf-8'))
  f.seek(0) #将光标移动开头,第0个位置。

  f.seek(3,1) #1代表的含义是相对于当前位置向后读取了三个位置

  f.seek(0,2) #相当于移动从文章最后移动几个位置

#练习,写一个类似于linux 下类似于tail的脚本,总是显示最后一行

import time
import sys
with open(r'%s' % sys.argv[2],'rb') as f:
f.seek(0,2) while True:
line = f.readline()
if line:
print(line.decode('utf-8'),end='')
else:
time.sleep(0.2)

truncate:截断文件,只读取部分内容

f.truncate(9)只截取9个字节,剩下的都会被清空

with open('a.txt','r+',encoding='utf-8') as f:
f.truncate(6)

Day2_and_Day3 文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

随机推荐

  1. (NO.00004)iOS实现打砖块游戏(一):素材的制作

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上有一 ...

  2. oracle ebs应用产品安全性-数据访问权限集

    定义 数据访问权限集是一个重要的.必须设定的系统配置文件选项.对具有相同科目表.日历和期间类型的分类帐及其所有平衡段值或管理段值的定义读写权限,系统管理员将其分配至不同的责任以控制不同的责任对分类帐数 ...

  3. Java进阶(二十四)Java List集合add与set方法原理简介

    Java List集合add与set方法原理简介 add方法 add方法用于向集合列表中添加对象. 语法1 用于在列表的尾部插入指定元素.如果List集合对象由于调用add方法而发生更改,则返回 tr ...

  4. java文件的基本操作示例

    一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...

  5. Linux 学习笔记_12_文件共享服务_3_NFS网络文件服务

    NFS网络文件服务 NFS---- Network File System 用于UNIX/Linux[UNIX类操作系统]系统间通过网络进行文件共享,用户可以把网络中NFS服务器提供的共享目录挂载到本 ...

  6. 《java入门第一季》之面向对象综合小案例

    需求: /*     教练和运动员案例         乒乓球运动员和篮球运动员.         乒乓球教练和篮球教练.         跟乒乓球相关的人员都需要学习英语.         分析,这 ...

  7. 【网站搭建】搭建独立域名博客 -- 独立域名博客上线了 www.hanshuliang.com

    博客是安装在阿里云的服务器上. 小结 : -- 进入数据库命令 :mysql -uroot -p123456 ; -- 检查nginx配置语法 :.../nginx/sbin/nginx -t; -- ...

  8. 11_Eclipse中演示Git版本的创建,历史版本的修改,创建分支,合并历史版本和当前版本

     1 执行以下案例: 某研发团队2011年初开发了一款名为Apollo的信息系统,目前已发布v1.0版本.此项目初期已有部分基础代码, 研发团队再此基础代码上经过3个月的努力发布了一个功能相对完备 ...

  9. (Struts2)XWork容器的实现机理

    模板方法----callInContext 翻开ContainerImpl的实现,我们可以看到callInContext,这个模板方法是容器所有操作调用的基础. 关于模板方法模式,大家可以看出刘伟老师 ...

  10. DEVICE_ATTR实例分析

    在内核中, sysfs 属性一般是由 __ATTR 系列的宏来声明的,如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_ATTR ,对驱动使用 DRIVER_ATTR ,对类别(class ...