###文件
'''
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. PHP和mysql英文

    spam (垃圾邮件) recruiter (招聘人员) occasional (偶然) professional and enthusiast programmers (专业和发烧友程序员) syn ...

  2. [Day4]Switch语句、数组、二维数组

    1.选择结构switch (1)格式 switch (表达式){ case 目标值1: 执行语句1; break; case 目标值2: 执行语句2; break; ...... case 目标值n: ...

  3. Xcode报错Xcode导入runtime框架函数参数没有提示或Too many arguments to function call, expected 0, have 2错误

    前言:在引入<objc/runtime.h> 与 <objc/message.h> 后,调用objc_msgSend(),会报如下错误: 报错原因: 从Xcode6之后,苹果不 ...

  4. [python2] python 打印表格 prettytable

    rpm包: [root@D129 cli]# yum info python-prettytable Loaded plugins: fastestmirror Loading mirror spee ...

  5. 转:Redis 3.2.1集群搭建

    Redis 3.2.1集群搭建   一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...

  6. 创建日志表记录DML操作和DDL操作

    创建一个日志表,记录dept表的DML操作 create table dept_log(logid number,type varchar2(50),logdate date,deptno numbe ...

  7. qt设计器中使用自定义控件

    当qt设计器中的控件不能满足需要时,这时就要自定义控件.然后再在qt设计器中使用. 在qt设计器中使用自定义控件时,可以用提升. 从控件派生出新的类: 然后在qt设计器中右键需要提升的控件: 填入提升 ...

  8. 【PyQt5-Qt Designer】pyqtSignal()-高级自定义信号与槽

    PyQt 5信号与槽的几种高级玩法 参考:http://www.broadview.com.cn/article/824 from PyQt5.QtCore import QObject , pyqt ...

  9. 配置svn用户及密码

    配置账户及密码   格式: user=passwd 配置新的账户 [root@mysql conf]# vim passwd 创建两个账户 [root@mysql conf]# egrep -v &q ...

  10. left join 太神奇了

    概念: 把left join左边的表的记录全部找出来.系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录.最后形成你的结果. 进行左连接时,就有涉及到主表.辅表 ...