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

被折叠的 条评论
为什么被折叠?



