文件知识点总结

文件,知识点,总结 · 浏览次数 : 11

小编点评

**文件操作指南** **打开文件** ```python with open('文件路径','模式') as f: # 获取文件对象 ``` **写入文件** ```python with open('文件路径','w+') as f: # 写内容到文件 ``` **读取文件** ```python with open('文件路径','r') as f: # 读取文件内容 ``` **修改文件** ```python with open('文件路径','r+') as f: # 读取文件内容 content = f.read() # 修改内容 f.seek(0) f.write(content + '\n') ``` **关闭文件** ```python f.close() ``` **上下文管理** ```python # 创建上下文管理器对象 with open('文件路径','w+') as f: # 打开文件 # 进行文件操作 # 关闭文件 # 使用上下文管理器打开和关闭文件 with open('文件路径','r') as f: # 读取文件内容 # 使用上下文管理器打开多个文件 with open('文件1.txt','w+') as f1,open('文件2.txt','r') as f2: # 写入文件1,读取文件2 f1.write('123') content = f2.read() ``` **os模块的目录及文件操作** ```python import os # 获取当前路径 current_path = os.getcwd() # 展示当前目录内容 print(os.listdir()) # 创建目录 os.mkdir('file04.py') # 删除文件 os.remove('file04.py') # 判断文件或目录是否存在 print(os.path.isfile('D:\\py学习01\\python基础\\文件1.py')) ```

正文

一:打开、关闭文件

1.打开文件:f=open('文件路径','模式')
2.操作:写入、读取、修改===》模式
3.关闭:f.close() ====》释放内存空间

 例1:读取文件

# 1.打开文件
f=open('file01.txt','r') # 文件对象 # mode='r'(默认模式为r) ===》如果是r+表示可读不写
print(f)
# 2.读取文件
print(f.read()) # read()
# 3.关闭
f.close()

运行截图:

 例2:写入

# w+ 可读可写
f=open('file012.txt','w+') # 文件对象
# 写入:只可以写字符串,写入之后会覆盖原有的内容
f.write('123eeex\n3432fp\n')

 例3:

     

f=open('file04.txt','a+') #追加
# f=open('file01.txt','ab+') # 加个b的作用:以二进制的格式打开文件,进行上述操作
# f2=open('file01.txt','r+') #追加

f.write('yod3')
f.flush()
# f.write('wee')
#f.writelines([1,2,3]) # TypeError: write() argument must be str, not int
f.writelines(['1\n','5']) # 写入多行(需要自己加换行符)
# f.write(b'abc')
f.seek(3)  # 移动光标
print(f.read()) # 读取光标以后的内容
# print(f2.readline())  # 读取一行
# print(f2.readlines())  # 读取多行
# li=f2.readlines()
# print(li[0])  # 列表

# f3=open('file01.txt','r+') #追加
# f3.write('abc')
# print(f3.tell())  # 获取游标的位置

# f4=open('file01.txt','r+') #追加
# f4.write('abc')
# f4.flush() # 刷新缓存

二:StringIO与 BytesIO(了解)

import io
# 字符串
sio=io.StringIO() # 创建假文件(字符串对象)
print(sio)  # <_io.StringIO object at 0x000001E120A40A68>
sio.write('abcd4w') # 写入
print(sio.getvalue()) # 读取
print('-----------------------------')
# 写入 二进制
sioo=io.BytesIO()
sioo.write(b'werty')
print(sioo.getvalue())
print(sioo.getvalue().decode('utf-8'))

运行截图: 

三:上下文管理

 文件一般流程如下:

1.打开文件
2.操作文件
3.关闭文件
如果把《
操作文件部分》放在上下文管理方法中,无需每次都写打开、关闭文件
# 上下文管理
class Test:
        # 最开始调用
    def __enter__(self):  # 自动调用这两个方法
        #print('正在使用enter')
        return  'enter 返回'
    def __exit__(self, exc_type, exc_val, exc_tb): # 最后调用这个方法
        print('z正在使用exit')

# 上下文
with Test() as t:
    # print(t)  # enter 返回
    print(t)

运行截图:

 注意事项:

通过上下文管理无需手动再次写关闭操作,操作完成自动关闭释放内存空间(底层帮我们已经做了),这样写让代码更加简洁清晰明了!
# with 打开文件 as 别名  这样写不用手动关闭文件  (别名:可以当做是一个被赋值的变量)
with open('file03.txt','w+') as f:
    f.write('123')

操作多文件:  

with open('file03.txt','w+') as f,open('file01.txt','r') as f1:
    f.write('123')  # f写入
    print(f1.read()) # f1读出

必须掌握:with..as的用法和特点

 四:os模块 的目录及文件操作

import os
print(os.getcwd())  # 显示当前路径  D:\py学习01\python基础\文件
print(os.listdir())  # 展示当前目录内容
print(os.listdir('D:\py学习01\python基础\文件'))  # 展示当前目录内容
# 改变路径
os.chdir('D:\py学习01\python基础\文件1') # 目录要有文件1
print(os.getcwd())
# 创建目录(文件夹)
os.mkdir('file04.py')
# 删除文件 
# os.remove('file04.py') # file04.py是目录无法删除,应该删除的是目录下面的文件

运行截图:

os.path模块 的路径操作

# 路径拼接: os.path.join(path1,path2….)
print(os.path.join('py学习01','python基础'))  # py学习01\python基础
# 是否是目录: os.path.isdir  # 文件就是目录
# 是否是文件: os.path.isfile
print(os.path.isdir('D:\py学习01\python基础\文件1'))  # True
# 文件夹才是路径
print(os.path.isdir('D:\py学习01\python基础\文件\file.py'))  # False
#
print(os.path.isfile('D:\py学习01\python基础\文件\文件01.py')) # True
print(os.path.isfile('D:\py学习01\python基础\文件'))  # False

运行截图: 

 

 练习:

1.写一个简单的复制文件代码
'''
思路:
1.打开文件:open
2.读取内容并保存在变量中:read
3.写入另一个文件中:write
'''
with open('file01.txt','r') as f,open('file03.txt','w') as f2:
    a=f.read()
    # print(a)
    f2.write(a)  # 写入

 2. 写一个用来遍历某目录所有内容的函数

'''
# 1.目录就是文件夹
# 2.内容===》文件
# 3.函数就是方法
# 4.传一个路径,是文件就遍历,如果是目录继续进入目录
'''
import os
def list_all(path):
    list_path=os.listdir(path)
    # 打印文件名
    print(os.listdir(path))
    '''
    ['04.py', 'file.py', 'file01.txt', 'file012.txt', 'file02.txt', 
    'file03.txt', 'file04', 'file04.py', '__init__.py', '文件01.py', 
    '文件02.py', '文件03.py', '文件04.py']
    '''
    for i in list_path:
        # 目录与文件名拼接
        full_path=os.path.join(path,i)
        # 对拼接后的地址判断,如果是目录继续遍历,否则直接打印文件名
        if os.path.isdir(full_path):
            # 继续遍历
            list_all(full_path)
        else:
            print(i)

    # print(path)
list_all('D:\py学习01\python基础\文件')

运行截图:

 

与文件知识点总结相似的内容:

文件知识点总结

一:打开、关闭文件 1.打开文件:f=open('文件路径','模式')2.操作:写入、读取、修改 》模式3.关闭:f.close() 》释放内存空间 例1:读取文件 # 1.打开文件f=open('file01.txt','r') # 文件对象 # mode='r'(默认模式为r) 》如果是r+表

[攻防世界][Web]PHP2

打开靶机对应的url 就一行字 Can you anthenticate to this website? 第一感觉就需要做目录文件扫描 使用御剑和dirsearch进行扫描,发现一个文件 index.phps 知识点: phps 是php标准中用来表示可以查看的php源文件的约定,不会被服务器执行

[转帖]linux--Segfault详解

linux--Segfault详解 1 简介1.1 段错误的定义1.2 痛点 2 知识点2.1 报错内容2.2 error number 3 排除步骤(借助汇编)3.1 日志确定错误类型3.2 计算相对地址3.3 反汇编该库文件3.4 查找地址对应的汇编语句3.5 在中间件中查找信息 3 排除步骤(

[转帖]文件操作之zip、bzip2、gzip、tar命令

文件操作之zip、bzip2、gzip、tar命令 原创 丁同学19902015-10-15 00:02:51博主文章分类:liunx基础©著作权 文章标签linux tarlinux文件压缩linux压缩文件linux命名方式linux gzip文章分类运维阅读数2808 先讲些简单的概念,因为对

文件下载与上传

# 文件上传与下载 工具:hutool springboot 文件上传与下载,hutool目录操作、文件解压、yaml文件操作。此例子展示了一个文件压缩包上传到服务器,解压放到某个特定目录的,并且校验md5值 ## html ``` 文件上传界面 ​ file_name ​ ``` ## sprin

大文件分卷压缩方法

大文件的传输一般都会受到尺寸限制,针对这一问题,本文介绍如何利用7-zip压缩工具,将大文件拆分成若干小文件进行分卷压缩传输,以及如何将压缩后的若干小文件合并解压,恢复原始文件。

【Azure 媒体服务】Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢?

问题描述 Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢? 问题解答 Azure Media Service上提供的 Build-in Transform 生成的资产中,音频与视频分别存储

体验.NET与文件存储服务MinIO

对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势: 跨服务器可用 兼容Amazon S3 API 横向扩容 高可用 支持加密 MinIO就是一个高性能的文件服务,我们使用.NET来操作一下。 部署MinIO 最简单的办法,就是在Docker上运行Mi

文件上传--php user.ini详解

文件上传 参考文档:https://www.php.net/manual/zh/configuration.file.per-user.php 如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。 auto_prepend_file 表示在每个PHP脚本之前

统计文件个数

> 博客地址:https://www.cnblogs.com/zylyehuo/ # 完整版 ```python import os count = 0 # 遍历文件夹 def walkFile(file): for root, dirs, files in os.walk(file): # roo