文件处理,文件的打开方式以及文件修改的两种方式

1. 什么是文件    文件是操作系统为应用程序或者用户提供一种操作硬盘的虚拟单位    强调:        文件是操作系统提供的虚拟单位        应用程序或者用户对文件的读写操作其实都是向操作系统发送指令

2. 为何要用文件    文件对应的硬盘空间,如果需要考虑永久保存数据那必须使用文件

3. 如何用文件

路径问题绝对路径: win:    C:\a\b\c\d.txt linux:  /a/b/c/d.txt相对路径: 相对于当前执行文件所在文件夹  a/b/c/d.txt

1 打开文件f=open(r‘D:\脱产5期内容\day09\a.txt‘,mode=‘rt‘,encoding=‘utf-8‘)print(f)

2 读/写文件data=f.read()print(data)

3 关闭文件f.close() # 向操作系统发送指令,让操作系统关闭打开的文件,回收操作系统资源print(f)f.read()

上下文管理with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:    data=f.read()    print(data)
一. 基本介绍控制文件读写操作的模式r(默认)wa

控制文件读写内容的模式(不能单独使用,必须与r、w、a连用)t(默认)b

二. 详细介绍控制文件读写操作的模式r(默认):只读模式,以该模式打开文件,当文件不存在时则报错,当文件存在时文件指针在文件开头with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:    data=f.read()    print(f.readable())    是否能读    print(f.writable())    是否能写

line=f.readline()    一次读一行    print(line,end=‘‘)

line = f.readline()     一次读一行    print(line,end=‘‘)

print(‘第三次读‘)    line = f.readline()    一次读一行    print(line, end=‘‘)    print(data,type(data))

for line in f:        print(line)

print(f.readlines())    把文件读成列表    pass

w: 只写模式,以该模式打开文件,当文件不存在时创建一个空文档,当文件存在时清空文件内容,文件指针在文件开头with open(‘a.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:    print(f.readable())    是否能读      print(f.writable())    是否能写

在打开了文件不关闭的情况下,连续的写入,新写的内容总是跟在老内容之后    f.write(‘你瞅啥\n‘)    f.write(‘瞅你那熊样\n‘)    f.write(‘巴拉巴拉。。。\n‘)

lines=[‘1111\n‘,‘2222\n‘,‘3333\n‘]    for line in lines:        f.write(line)

f.writelines(lines)    相当于循环line

f.write(‘aaaa\nbbb\ncccc\n‘)

a: 只追加写模式,以该模式打开文件,当文件不存在时创建一个空文档,当文件存在时不清空文件内容,文件指针跳到文件末尾with open(‘c.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:    f.write(‘你好阿斯蒂芬\n‘)    f.write(‘adfasdf\n‘)

f.writelines([1,2,3])

控制文件读写内容的模式(不能单独使用,必须与r、w、a连用)t(默认):无论读写都是以字符为单位的,只能操作文本文件,必须指定encoding参数b:无论读写都是以bytes为单位的,可以操作所有文件,一定不能指定encoding参数with open(‘a.txt‘,mode=‘rb‘) as f:    data=f.read()    print(data,type(data))    print(data.decode(‘utf-8‘))

with open(‘01.mp4‘,mode=‘rb‘) as f:    data=f.read()    print(data,type(data))

with open(‘a.txt‘,mode=‘wb‘) as f:    f.write(‘字符行啊士大夫阿斯蒂芬撒旦发‘.encode(‘utf-8‘))

练习:拷贝文件小程序with open(‘01.mp4‘,mode=‘rb‘,) as read_f,\        open(r‘D:\1111.mp4‘,mode=‘wb‘) as write_f:    data=read_f.read()    write_f.write(data)

升级版:
拷贝文件one=input("源文件: ")two=input(‘目标文件: ‘)with open(one,mode=‘rb‘)as read_f,\    open(two,mode=‘wb‘)as write_f:    data=read_f.read()    write_f.write(data)

了解:+:不能单独使用,必须与rwa连用,r+ w+ a+with open(‘a.txt‘,‘r+t‘,encoding=‘utf-8‘) as f:    # print(f.readable())    # print(f.writable())

data=f.readline()    print(data)    f.write(‘刘清蒸‘)

with open(‘a.txt‘,‘r+t‘,encoding=‘utf-8‘) as f:    print(f.readable())    print(f.writable())

f.seek(10)    print(f.tell())    f.write(‘你好啊‘)
方式一:1. 以读的方式打开源文件2. 将文件内容一次性全读入内存,在内存完成修改3. 以写的方式打开源文件,然后将修改后的结果一次性写入源文件总结:优点:在文件修改过程中硬盘只存在一份数据缺点:浪费内存

with open(‘b.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f1:    msg=f1.read()    new_msg=msg.replace(‘alex‘,‘大SB‘)

with open(‘b.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f2:    f2.write(new_msg)

方式二1. 以读的方式打开源文件,以写的方式打开一个临时文件2. 读取源文件的一行内容到内存中,将修改的结果写入临时文件,循环往复直到改3. 删除源文件,将临时文件重命名为源文件名优点:同一时间在内存中只有文件的一行内容,更节省内容缺点:在文件修改过程中硬盘只存在两份数据

import os

with open(‘b.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as read_f,\    open(‘.b.txt.swap‘,mode=‘wt‘,encoding=‘utf-8‘) as write_f:    for line in read_f:        write_f.write(line.replace(‘大SB‘,‘alex‘))

os.remove(‘b.txt‘)os.rename(‘.b.txt.swap‘,‘b.txt‘)

原文地址:https://www.cnblogs.com/huangchaonan/p/10022825.html

时间: 2024-11-08 23:43:33

文件处理,文件的打开方式以及文件修改的两种方式的相关文章

第六篇、文件处理之文件修改的两种方式

目录 第六篇.文件处理之文件修改的两种方式 说明 方式一 方式二 总结 第六篇.文件处理之文件修改的两种方式 说明 文件的数据是存放在硬盘上的,所以只能覆盖,不能直接修改,平时看到的修改文件都是障眼法的效果,具体的两种实现方式 方式一 将硬盘里的文件全部加载到内存里,内存是可以直接修改的,修改完了后,再由内存覆盖到硬盘里 import os with open('37r.txt') as fr, open('37r_swap.txt', 'w') as fw: data = fr.read()

文件的高级应用及修改的两种方式

文件的高级应用及修改的两种方式 一.文件的高级应用 可读.可写 r+t: 可读.可写 w+t: 可写.可读 a+t: 可追加.可读 # wt with open('36w.txt', 'wt', encoding='utf-8') as fw: print(fw.readable()) print(fw.writable()) False True # w+t with open('36w.txt', 'w+t', encoding='utf-8') as fw: print(fw.readab

文件修改的两种方式

文件修改的两种方式 文件的数据是存放于硬盘上的,因而只存在覆盖.不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式. 一.方式一 将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器). import os with open('info.txt', 'r', encoding='utf-8') as fr, open('info_test.txt', 'w', encodin

Java反射获取class对象的三种方式,反射创建对象的两种方式

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

python-文件操作-修改的两种方式

方法一:(占内存) 全部把文件读进内存进行修改. f_name ="D:/联系方式2.txt" old_str ='乔一菲' new_str ='刚亮' f =open(f_name,'r+') str =f.read() print(str) str2=str.replace(old_str,new_str) print(str2) f.close() 方法二:(占硬盘) 边读边修改. 打开旧文件,用循环逐行地读,同时,往新文件逐行写. import os f_name ="

iOS 自定义layer的两种方式

在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个图层 @property(nonatomic,readonly,retain) CALayer *layer; 每一个UIView内部都默认关联一个CALayer,我们可称这个Laye

Python36 1.joinablequeue 2.线程理论 3.多线程对比多进程 4.线程的使用方式 4.1.产生 线程的两种方式 4.2.守护线程 4.3.线程安全问题 4.3.1.互斥锁 4.3.2.死锁 4.3.3.可重入锁 4.3.4.信号量

复习1.守护进程2.互斥锁(解决数据错乱的方法)3.IPC(进程间通讯)4.生产者与消费者模型 详解:1.守护进程 一个进程可以设为另一个进程的守护进程 特点:被守护的进程结束时,守护进程也会随之结束 本质:父进程交给子进程一个任务,然而父进程 先于子进程结束了,子进程的任务也就没有必要 继续执行了 格式:开始前加 p.daemon=True 2.互斥锁(解决数据错乱的方法)方法一:互斥锁 互斥 互相排斥 锁的本质:一个标志 标志的两个状态: 1.锁定 2.未锁定 什么时候用? 当多个进程要操作

SpringMVC文件上传的两种方式

搞JavaWEB的应该或多或少都做过文件上传,之前也做过简单的上传,但是如下的需求也确实把我为难了一把: 1.上传需要异步, 2.需要把上传后文件的地址返回来, 3.需要进度条显示上传进度. 项目使用SpringMVC架构+easyUI,初步分析,进度条可以使用easyui自带的进度条,上传可以使用ajaxFileUpload或者ajaxForm.文件传上去,然后把路径带回来是没问题的,关键是上传进度怎么获取.最终,两种方式都实现啦. 首先,不管哪种方式,后台对文件处理都是必须的.文件处理: 1

FTP文件传输协议两种方式的工作原理

FTP是一种文件传输协议,它支持两种模式,一种方式叫做Standard (也就是 Active,主动方式),一种是 Passive (也就是PASV,被动方式). Standard模式 FTP的客户端发送 PORT 命令到FTP server.Passive模式FTP的客户端发送 PASV命令到 FTP Server. 下面介绍一个这两种方式的工作原理: Standard模式 FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个