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

  1. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

  2. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  3. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  4. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  5. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  6. Python之常用文件操作

    Python之常用文件操作

  7. python(1) -文件操作

    很多时候我们需要对文件进行一些操作,比如读取并分析日志文件,写入日志文件等等.显然python也内置了对文件进行操作的函数. 读文件: >>> f = open('a.log','r ...

  8. Python开发【第三篇】:Python基本之文件操作

    Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...

  9. python基础之文件操作

    对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...

  10. 关于Python中的文件操作(转)

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

随机推荐

  1. .net WebService的使用

    1. WebService可单独作为一个网站,不限平台的被调用. 2. 打开VS,选择新建 3. [WebMethod] 方法上面有这个说明,则表示此方法可被外部调用. 我们添加4个方法:加.减.乘. ...

  2. 量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html

    量子杨-Baxter方程新解系的一般量子偶构造_爱学术 https://www.ixueshu.com/document/f3385115a33571aa318947a18e7f9386.html

  3. 20165317Java实验三敏捷开发与XP实践

    实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...

  4. WebSocket 的鉴权授权方案

    引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...

  5. 【托业】【新托业TOEIC新题型真题】学习笔记2-题库一-->P5-6

    P5-6 --------------------------------------单词-------------------------------------- transfrom 转化 jus ...

  6. 让网站不去请求favicon.ico图标

    让网站不去请求favicon.ico图标 favicon.ico 图标用于收藏夹图标和浏览器标签上的显示,如果不设置,浏览器会请求网站根目录的这个图标,如果网站根目录也没有这图标会产生 404.出于优 ...

  7. linux 查看磁盘读写:iostat

    iostat命令用来查看磁盘IO的读写情况,用法如下: 安装iostat命令 [root@mysql ~]# yum install -y sysstat [root@mysql ~]# iostat ...

  8. MongoDB的客户端管理工具--nosqlbooster 连接MongoDB服务器

    nosqlbooster的官网地址为https://nosqlbooster.com.大家如果想直接下载,可以登入下载网址https://nosqlbooster.com/downloads. 下载w ...

  9. ETL : kettle Spoon 转换 + 作业

    Kettle能做什么? 前言 : 需将db2中数据导入到mysql中,利用etl工具进行多表转换.以此为切入点,系统整理.学习kettle工具. 提醒: kettle是纯java编写,机器需要有jre ...

  10. dedecms清空所有文章怎么操作?sql语句如何写?

    小C新建了一个站,确切的说是复制,出于seo考虑,决定清空所有文章,那么dedecms清空所有文章怎么操作?sql语句如何写呢?特别提醒:修改之前一定要先做好备份,以防万一!下面的语句在迫不得已的情况 ...