###文件
'''
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之函数

    scope(空间) unpack (解压) Traversable (穿越) performance(性能) experiment (检验) properties (属性) trailing (尾随) ...

  2. mysql root看不到mysql表

    1.首先停止mysql服务:service mysqld stop2.加参数启动mysql:/usr/bin/mysqld_safe --skip-grant-tables & 然后就可以无任 ...

  3. [administrative][qemu][kvm] qemu使用--bridge-helper

    公司服务器,源码安装的 qemu-2.9.0. 不是yum装的. 问题1:非超级用户的kvm权限问题: 略,直接超级用户使用. 也许有用? https://access.redhat.com/docu ...

  4. cxgridchart饼状图

    var VIEW:TcxGridDBChartView; Level:TcxGridLevel; Series:TcxGridDBChartSeries; begin View := cxGrid1. ...

  5. java 线程(五)线程安全 Lock接口

    package cn.sasa.demo3; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...

  6. finecms如何调用自定义内容

    我们建站的时间经常会有一些固定的元素,比如电话.地址等,这种相对比较简单的东西可以让编辑人员直接在后台就可以定义,那么finecms有没有这个功能呢?怎么定义?如何调用? finecms后台有一个自定 ...

  7. 自动化工具之三:pywinauto

    Python自动化工具:pywinauto 一.pywinauto的安装 (1)安装命令 pip install -U pywinauto/pip3 install -U pywinauto (2)验 ...

  8. Building an (awesome) API with NancyFX 2.0 + Dapper

    http://blog.nandotech.com/post/2016-10-25-nancyfx-webapi-dapper/?utm_source=tuicool&utm_medium=r ...

  9. 回文字符串 NYOJ

    # include<iostream> # include<string> # include<string.h> # include<queue> # ...

  10. python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出

    # 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...