Python 文件操作 遍历文件,拷贝文件,拷贝目录,创建文件夹,删除目录

本文介绍如何使用Python进行文件和目录的操作,包括文件的复制、移动、重命名、遍历及目录的创建和删除等基本操作,并提供了实际代码示例。

Python 文件操作 遍历文件,拷贝文件,拷贝目录,创建文件夹,删除目录

flyfish

引用与初始

import os
import shutil

source_directory_path ="/media/data/test1"
target_directory_path = "/media/data/test2"

拷贝整个目录 test2文件夹会自动创建

shutil.copytree(source_directory_path, target_directory_path)

单个文件拷贝

file_name='1.txt'
source_file_path = os.path.join(source_directory_path, file_name)
target_file_path = os.path.join(target_directory_path, file_name)
shutil.copyfile(source_file_path, target_file_path)

遍历拷贝

for root, dirs, files in os.walk(source_directory_path):
        print("root:",root)
        print("dirs:", dirs)
        print("files:", files)
        # root 表示当前正在访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list

        for f in files:
            source_file_path = os.path.join(root, f)
            target_file_path = os.path.join(target_directory_path, f)
            shutil.copyfile(source_file_path, target_file_path)

如果文件夹不存在就创建

path_test = os.path.abspath('/media/data/test0')
if not os.path.exists(path_test):
     os.makedirs(path_test)

如果文件夹存在则删除目录

 if os.path.exists(path_test):
     shutil.rmtree(path_test)

遍历一层目录的文件

import os
import glob
from pathlib import Path
path = "/media/data/"
p = str(Path(path))  # os-agnostic
p = os.path.abspath(p)  # absolute path
if '*' in p:
    files = sorted(glob.glob(p, recursive=True))  # glob
elif os.path.isdir(p):
    files = sorted(glob.glob(os.path.join(p, '*.*')))  # dir
elif os.path.isfile(p):
    files = [p]  # files
else:
    raise Exception(f'ERROR: {p} does not exist')

img_formats = ['bmp', 'jpg','png']
images = [x for x in files if x.split('.')[-1].lower() in img_formats]

for i in images:
    print(i)

遍历source目录下所有的jpg文件,包括子文件夹中的所有jpg文件

from pathlib import Path
for i,img in enumerate(Path(source).rglob('*.jpg')):
    print(i,":",img)

文件重命名

这里是对扩展名进行重命名

import os
def renameimg(old_filename):
    ext = os.path.splitext(old_filename)  # 将文件名路径与后缀名分开
    if ext[1] == '.jpeg':  # 文件名:ext[0], 文件扩展名:ext[1]
        new_filename = ext[0] + '.jpg'  
        os.rename(old_filename, new_filename)


old_filepath="/media/data/test0/"
files = os.listdir(old_filepath)
for i,file in enumerate(files):
    filepath = os.path.join(old_filepath, file)
    renameimg(filepath)

png转jpg

from PIL import Image
import os

old_filepath="/media/data/test0/"
files = os.listdir(old_filepath)
for i,file in enumerate(files):
    filepath = os.path.join(old_filepath, file)
    ext = os.path.splitext(filepath)  # 将文件名路径与后缀名分开
    if ext[1] == '.png':  # 文件名:ext[0] ,文件扩展名:ext[1]
        new_filename = ext[0] + '.jpg'
        im = Image.open(filepath)
        im = im.convert('RGB') #RGBA四通道的,A通道为透明通道,使用convert('RGB')进行通道转换
        im.save(new_filename, quality=95)

文件末尾追加一行文本

path='source.txt'
with open(path, 'a+') as f:
    f.write('new 0.032031 0.090278\n')  # 加\n换行显示

文件开头新增一行文本

with open(path, 'r+') as f:
    content = f.read()
    f.seek(0, 0)
    f.write('new 0.032031 0.090278\n'+content)

文件删除

os.remove(path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二分掌柜的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值