Python记录4:文件操作
###文件
'''
1. 什麽是文件
文件是操作系統為用戶/应用程序提供一種操作硬盤的虚拟单位
2. 爲何要用文件
为了存取硬盘数据
3. 如何用文件
#1. 打開文件
#2. 读写文件
#3. 关闭文件##回收操作系统资源
'''
# f=open(r'C:\Users\DELL\Desktop\a.txt',mode='r',encoding='utf-8')
# #打开一个文件,后面跟文件的地址,mode等于r表示只读方式,
# #小写的r表示后面的字符串没有特别的含义
# data=f.read()
# print(data)
# print(f)
# f.close() # 回收操作系統資源 # with open('a.txt',mode='r',encoding='utf-8') as f1,\
# open('b.txt',mode='r',encoding='utf-8') as f2:
# ####以后打开文件用这种格式
# print(f1.read())
# print(f2.read())
#文件的打开模式
#一:介紹
#控制文件操作方法的模式:
#r:只读模式(默认的)
#w:只写模式
#a:只追加写(只能在最后面加 不能在前面或者中间写) #r:只读模式,当文件存在时文件指針在文件開頭,当文件不存在時會报错
# with open('szp.txt',mode='rt',encoding='utf-8') as f:
# print(f.readable())
# data=f.read()
# print(data)
# print(f.writable())
# f.write('xxxxx')
#
# res1=f.read()
# print('first: ',res1)
#
# print(f.readline())
# print(f.readline()) # l=[]
# for line in f:
# # print(line)
# l.append(line)
# print(l) # lines=f.readlines()
# print(lines) # with open('aaa.txt', mode='rt', encoding='utf-8') as f:
# res2 = f.read()
# print('second: ', res2) #w:只写模式,当文件存在時将文件清空文件指针在文件开头,儅文件不存在時會创建空文档
# with open('SZP123.txt', mode='wt', encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# # f.read()
# #
# # # 强调:在文件打开了没有关闭的情况下连续写入,新写入的内容总是紧跟在前一段内容之后
# f.write('你好啊哈哈哈\n')
# f.write('大家好哈哈哈')
# f.write('1111\n2222\n333\n') #a:只追写模式,当文件存在時文件指针直接跳到文件末尾,儅文件不存在時會创建空文档
# with open('b.txt',mode='at',encoding='utf-8') as f:
# # print(f.readable())
# # print(f.writable())
#
## 注意:与w模式的异同:
##相同点:在文件打开了没有关闭的情况下,连续的写入,新写入的内容总是紧跟在前一段内容之后
##不同点:w模式在文件关闭又重新打开的情况下,文件会被清空,文件指针跑到文件开头,而a模式无
# 论何时打开文件,文件指针总是直接跳到文件末尾
#所以一般用a模式比较好,也就是mode=at 这样可以之前写的内容不会被清除 #在b下rwa的使用
# with open('SZP123.txt',mode='rb') as f:
# data=f.read()
# print(data,type(data))
####在模式b下也可以读取一张图片,不过前提是要这张图片存在这个路径下面,如果不存在会报错,
#之前的那个模式一个文件如果存在会被清空,不存在会自动创建一个新的空文件
# with open('123.jpg',mode='rb') as f:
# data=f.read()
# print(data,type(data)) # with open('e.txt',mode='wb') as f:
# f.write('你好啊 我叫孙志平 来自同济大学\n'.encode('utf-8'))
#以上这个模式每次运行的结果都次运行都会覆盖掉前面一次运行的结果 # with open('e.txt',mode='ab') as f:
# f.write('我好啊\n'.encode('utf-8')) #控制文件操作内容格式的模式:(不能单独使用,必須跟r\w\a連用)
#t(默認的):无论读写都是以字符串str为單位的,只能用于文本文件,并且必須指定encoding參數
#b:无论读写都是以二進制bytes為單位的,適用於所有文件,一定不能指定encoding參數 #二:示範
# f=open('123.jpg',mode='rt',encoding='utf-8')
# data=f.read()
# # print(data,type(data))
# f.close() # f=open('a.txt',mode='rb')
# data=f.read()
# # print(data,type(data))
# print(data.decode('utf-8'))
# f.close() # 小练习
# src_file=input('请输入源文件路径: ').strip() #src_file='D:\周末三期\day04\123.jpg'
# dst_file=input('请输入目标文件路径: ').strip()
# with open(r'%s' %src_file,mode='rb') as f1,open(r'%s' %dst_file,mode='wb') as f2:
# # data=f1.read()
# # f2.write(data)
#
# for line in f1:
# # print(line)
# f2.write(line) # 了解:+
# with open('e.txt',mode='r+t',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# # print(f.read())
# f.write('1111')
#文件内指针的移动 #只有t模式下的read(n)中n代表读取的字符个数,除此外文件内指针的移动都是以bytes为单位
# with open('e.txt',mode='rt',encoding='utf-8') as f:
# data=f.read(4)
# print(data) # with open('e.txt',mode='rb') as f:
# data=f.read(6)
# print(data.decode('utf-8')) # with open('e.txt',mode='r+',encoding='utf-8') as f:
# f.truncate(3) # 主动控制文件内指针的移动
#f.seek(参数1,参数2)
#参数1: 控制的移动的字节个数
#参数2: 控制参照的位置
# 0(默认的):参照文件开头
# 1:参照指针当前所在位置
# 2:参照指针文件末尾
# 强调:只有0模式可以在t下使用,1和2模式只能在b模式下使用 # with open('e.txt',mode='rt',encoding='utf-8') as f:
# a=f.seek(3,0)###第一个参数表示开始的位置,
# print(a)
# print(f.read()) # with open('e.txt',mode='rb') as f:
# # f.seek(6,0)
# # f.read(3)
# # f.seek(3,1)
# # print(f.tell())
# # print(f.read().decode('utf-8'))
#
# # f.seek(-8,2)
# # print(f.read().decode('utf-8'))
#
# f.seek(0,2)
# print(f.tell()) #小练习:tail -f access.log
# with open('access.log','rb') as f:
# f.seek(0,2)
# while True:
# line=f.readline()
# if len(line) == 0:
# #没有值
# pass
# else:
# print(line.decode('utf-8'),end='')
#文件修改的两种方式:
#结论:硬盘空间都是用新内容覆盖旧内容,不可更改,而内存空间是可以修改的
#之前的操作都是直接覆盖原文件,这个可以在原文件的基础上进行修改
# with open('e.txt',mode='r+t',encoding='utf-8') as f:
# f.seek(3,0)
# f.write('111111111111') # 文件修改的方式一:
# 思路:
# 1. 将文件内容全部读入内存
# 2. 在内存中完成修改
# 3. 将修改的结果写回原文件
# 优点:在文件修改期间硬盘上就一份数据
# 缺点:会过多地占用内存
# with open('e.txt',mode='rt',encoding='utf-8') as f:
# data=f.read()
# data=data.replace('alex','dsb')
#
# with open('e.txt',mode='wt',encoding='utf-8') as f:
# f.write(data) # 文件修改的方式二:
# 思路:
# 1. 以读的方式打开源文件,以写的方式打开一个临时文件
# 2. 从源文件中读取一行内容,修改完后再写入临时文件,循环往复直到源文件全部读完
# 3. 删掉源文件,将临时文件重命名为源文件名
# 优点:不会过多地占用内存
# 缺点:在文件修改期间硬盘会同时存在两份数据 # import os
# with open('e.txt',mode='rt',encoding='utf-8') as read_f,\
# open('.e.txt.swap',mode='wt',encoding='utf-8') as write_f:
# for line in read_f:
# write_f.write(line.replace('dsb','alex'))
#
# os.remove('e.txt')
# os.rename('.e.txt.swap','e.txt')
Python记录4:文件操作的更多相关文章
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python之常用文件操作
Python之常用文件操作
- python(1) -文件操作
很多时候我们需要对文件进行一些操作,比如读取并分析日志文件,写入日志文件等等.显然python也内置了对文件进行操作的函数. 读文件: >>> f = open('a.log','r ...
- Python开发【第三篇】:Python基本之文件操作
Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...
- python基础之文件操作
对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
随机推荐
- 量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html
量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html
- Page8:对偶原理以及结构分解[Linear System Theory]
内容包含状态转移矩阵的对偶性.方块图的对偶性.时序的对偶性以及对偶性原理,能控能观标准型及其结构分解
- [skill][graphviz] 到底用什么画图: graphviz/inkscape/yed
官方教程文档:http://www.graphviz.org/pdf/dotguide.pdf 一:在文档里抄一个简单的例子 /home/tong/Src/copyright/onescorpion/ ...
- 2018/03/07 每日一个Linux命令 之 cat
每日一个Linux命令 2018-03-07 Linux 命令 cat cat [-参数] fileName 在之前的Linux使用中 cat 命令一直作为文本输出指令来使用,很少可以深入学习的该命令 ...
- WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法
一.进入安全模式 1.通过Ctrl+R打开运行窗口,输入Msconfig 2.如上图,选择安全引导,点击确定.重启计算机进入安全模式. 二.在安全模式下,设置环境变量 1.C:\Windows\Sys ...
- ubuntu安装jupyter 并设置远程访问
Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程,可视化和说明文本的文档. 简单的介绍就是:Jupyter Notebook是Ipython的升级版,而Ipyt ...
- linux网络设置和虚拟机克隆转移之后网卡找不到
linux网络设置和虚拟机克隆转移之后Error:No suitable device found:no device found for connection 'System eth0'问题解决 ...
- python序列元素引用容易出错的地方
python序列分列表和元组,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可.举个简单的例子,a1是一个元组,a2是一个列表 ...
- Error, some other host already uses address 192.168.0.202错误解决方法
Error, some other host already uses address 192.168.0.202错误解决方法 今天配置虚拟机网卡的时候遇到错误:Error, some other h ...
- kafka3 本地目录结构以及在在zk上的znode
一 kafka本地目录结构 [root@hadoop ~]# cd /tmp/kafka-logs1 [root@hadoop kafka-logs1]# find . . ./.lock ./rec ...