Python 文件操作综合案例

本文介绍如何使用Python进行文件复制及按文件类型分类的方法,并提供实际代码示例。
# 案例
# 文件的复制
# 要求
# 将一个文件, 复制到另外一个副本中
# 步骤分析
# 1.
# 只读模式, 打开要复制的文件
import os
import shutil

path = "files"
if not os.path.exists(path):
    exit()

os.chdir(path)
source_file = open("a.txt", "r")    #encoding = "utf-8"
dst_file = open("b.txt", "a")       # 追加模式, 打开副本文件

# 2.
# 从源文件中读取内容
content = source_file.read()
# 写入到目标文件中
dst_file.write(content)

# 3.
# 关闭源文件和目标文件
source_file.close()
dst_file.close()

# 注意
# 大文件处理
source_file = open("big.txt", "r", encoding="utf-8")    #encoding = "utf-8"
dst_file = open("big_bak.txt", "w", encoding="utf-8")       # 追加模式, 打开副本文件
# 大文件处理主要是在读取的时候以一定的字节量来读取
while True:
    content = source_file.read(1024)
    if (len(content) == 0):
        break
    dst_file.write(content)
# 关闭源文件和目标文件
source_file.close()
dst_file.close()

# 文件分类, 并生成文件清单
file_list = os.listdir() #['1.jpg', '2.jpg', 'a.avi', 'a.txt', 'b.avi', 'b.txt', 'big.txt', 'big_bak.txt']
# 给定一批文件

# 1.
# 按照文件后缀名, 划分到不同的文件夹
# 文件夹命名: 后缀名
# 结果
for file_name in file_list:
    # print(file_name)
    index = file_name.rfind(".")
    # print(index)
    if index == -1:
        continue
    extension = file_name[index + 1:]
    # print(extension)
    if not os.path.exists(extension):
        os.mkdir(extension)
    shutil.move(file_name,extension)



# 2.
# 生成.txt格式的文件清单
# 标明, 不同的格式, 分别有哪些文件
# 示例


def fileListToFile(dir, file):
    file_list = os.listdir(dir)
    for file_name in file_list:
        newFile = dir + "/" + file_name # 这个要放在这里
        if os.path.isdir(newFile):
            # print(newFile)
            file.write(newFile + "\n")
            fileListToFile(newFile,file)
        else:
            # print("\t" + file_name)
            file.write("\t" + file_name + "\n")

f = open("list.txt", "a")

fileListToFile("files", f)

f.close()

#list.txt
# files/avi
#     a.avi
#     b.avi
# files/jpg
#     1.jpg
#     2.jpg
# files/txt
#     a.txt
#     b.txt
#     big.txt
#     big_bak.txt

 

转载于:https://www.cnblogs.com/delphiclub/p/8471589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值