python之文件操作介绍

1 os模块

os模块的学习参考的是Python必学的OS模块详解

1.1 os模块简介

(1)os(operating system):OS模块是Python标准库中的一个用于访问操作系统功能的模块,使用OS模块中提供的接口,可以实现跨平台访问。
(2)操作:获取平台的信息、对目录操作、判断操作

1.2 常用操作

'''
os模块
'''
# 系统操作
import os
# os.getcwd: 获取当前的路径
print(os.getcwd())  # F:\教材\python学习\python练习\25
# os.listdir: 返回指定目录的所有文件名和目录名,并以列表形式返回
print(os.listdir())
# os.mkdir: 创建一个目录,只创建一个目录文件
os.mkdir('demo23')
# os.rdir: 删除一个空目录。目录有文件则无法删除
# os.chdir: 改变目录

#判断
# os.path.isfile(path):判断指定对象是否为文件。是返回True,否则False
# os.path.isdir(path):判断指定对象是否为目录。是True,否则False
# os.path.exists(path): 检验指定的对象是否存在。是True,否则False
os.listdir()
print(os.path.isdir('F:\教材\python学习\python练习\25')) # False

#path模块
# os.path.getsize():获得文件的大小,如果为目录,返回0
print(os.path.getsize('F:\教材\python学习\python练习\\25'))
# os.path.abspath():获得绝对路径
# os.path.join(path, name):连接目录和文件名
# os.path.split(path):返回路径的目录和文件名,通过将最后一个'/',将目录和文件名分开,而不是一个整体
# os.path.dirname(path):返回文件路径

#创建和删除目录
my_dir1 = 'F:\教材\python学习\python练习\\26'
my_dir2 = 'F:\教材\python学习\python练习\\25'
os.makedirs(my_dir1) # 创建目录
os.rmdir(my_dir1)  # 删除目录
os.chdir(my_dir2) # 修改目录

2 文件操作

2.1 文件操作简介

(1)对文件(File)进行输入和产出的操作(IO Input/Output),即通过Python程序对计算机的各种文件进行增删改查的操作。
(2)操作文件的步骤 1.打开文件 2.对文件进行各种操作(读写)然后保存 3.关闭文件

'''
文件操作:
(1)对文件(File)进行输入和产出的操作(IO Input/Output),即通过Python程序对计算机的各种文件进行增删改查的操作。
(2)操作文件的步骤 1.打开文件 2.对文件进行各种操作(读写)然后保存 3.关闭文件
    ========= ===============================================================
    Character Meaning
    --------- ---------------------------------------------------------------
    'r'       open for reading (default)
    'w'       open for writing, truncating the file first
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists
    'b'       binary mode
    't'       text mode (default)
    '+'       open a disk file for updating (reading and writing)
    'U'       universal newline mode (deprecated)
    ========= ===============================================================
'''

2.2 打开文件

# 1.文件打开
file1 = 'F:\教材\python学习\python练习\\25\demo.txt'
file2 = '"txt"'
# open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
# 返回值 返回了一个对象 这个对象代表的就是当前打开的文件
# 如果目标文件和当前文件在同一级目录下,直接使用文件名即可
file_obj = open(file1)
print(file_obj)  # <_io.TextIOWrapper name='F:\\教材\\python学习\\python练习\\25\\demo.txt' mode='r' encoding='cp936'>

2.3 读取文件的方法

'''
文件读取方法
read([size])方法:从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止
readline()方法:每次读出一行内容,比较适合大文件,返回的是每行内容
readlines()方法:读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
linecache模块:定义输出某个文件(file_name)的第n行,linecache.getline(file_name,n)
'''
file_name = 'demo2.txt'
with open(file_name,encoding='utf-8') as file_obj:
    # print(file_obj.read())
    # readline()该方法用来读取一行的内容
    # readlines() 它会一次性读取文件内容以列表形式返回
    r = file_obj.readlines()
    print(r[0]) # 白日依山尽

2.4 文件的读取关闭

'''
2.文件读取关闭
可以将文件分为2种类型: 纯文本⽂件(使⽤utf-8编码编写的⽂件) 、二进制⽂件(图⽚ mp3 视频...
# 通过read()来读取文件的内容,调用close关闭文件
# 调用open()来打开⼀个文件,运行完毕就自动把文件关闭
# open()打开⽂件时,默认是以文本⽂件的形式打开的 open()默认的编码 为None。所以处理文本⽂件时要指定编码
'''
# 1 通过read()来读取文件的内容
file1 = 'F:\教材\python学习\python练习\\25\demo.txt'
file_obj = open(file1,'r',encoding='utf-8')
print(file_obj.read())
file_obj.close()  # 关闭文件,以免占用内存
# 结果:From the distance, it looked like a skinny tube,
# but as we got closer, we could see it flesh out before our eyes.
# It was tubular, all right, but fatter than we could see from far away.
# Furthermore, we were also astonished to notice that the building

# 2 调用open()来打开⼀个文件,with运行完毕,即相当于把文件关闭
file_name = 'demo2.txt'
with open(file_name,'r',encoding='utf-8') as f:
    content1 = f.read()
    print(content1) # 白日依山尽 黄河入海流 欲穷千里目 更上一层楼
    print(len(content1)) # 23
    # 对于较大的文件不要直接使用read()
    # help(file_obj.read)

with open(file_name,'r',encoding='utf-8') as f:
    content2 = f.read(6)  # 白日依山尽
    print(content2)
    print(len(content2)) # 26


2.5 较大文件读取

# 打开较大的文件
file_name = 'demo.txt'
try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定义一个变量 来保存结果
        file_content = ''
        # 定义一个变量 指定每次读取的大小
        chunk = 100
        # 创建一个循环来读取内容
        while True:
            content = file_obj.read(chunk)
            # 检查是否读完文件
            if not content:
                # 内容读取完毕退出循环
                break
            file_content += content
except FileNotFoundError:
    print(f'{file_name}文件不存在.....')
print(file_content,end='')

2.6 文件写入

'''
文件写入:
    # write()来向文件中写入内容
    # 如果操作的是一个文本文件的时候,则需要传递一个字符串作为参数
    # r表示只读
    # w表示可以写
    # a表示追加
    # x 表示用来创建新的文件,如有文件不存在则创建,如果存在就报错
w表示可以写。使⽤w写⼊文件时,如果文件不存在则会创建⼀个文件。如果文件存在则会覆盖原文件内容

'''
file = 'demo3.txt'
with open(file,'w') as f:
    f.write('123\n')
    f.write('456\n')
    # f.write(789\n) # TypeError: write() argument must be str, not int
    f.write('789\n')

2.7 二进制文件的操作

'''
二进制文件的操作:
1.读取二进制文件:rb
2.写入二进制文件:wb
'''
file_name = 'F:\教材\python学习\python练习\\25\Kalimba.mp3'
with open(file_name,'rb') as file_obj:
    # 将读取到的内容写出来
    # 定义一个新的文件
    new_name = 'abc.mp3'
    with open(new_name,'wb') as new_obj:
        # 定义每次读取的大小
        chuck = 1024 * 100
        while True:
            # 读取数据
            content = file_obj.read(chuck)
            # 判断是否读取完毕
            if not content:
                break
            # 将内容写到新的文件当中
            new_obj.write(content)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值