用python处理各种文件

1.对图片的处理

(1)读取一个文件夹下的所有图片

import glob
def load_train(train_path):
	images = []
	files = glob.glob(path)  #每个图像路径读取
	for fl in files:
           image = cv2.imread(fl)
           images.append(image)
    return images
train_path = './images_data/*.jpg'
#train_path = './images_data/*g'

(2)对图片的大小,类型进行设置

import cv2
import numpy as np
image = cv2.resize(image, (image_size_h,image_size_w),0,0, cv2.INTER_LINEAR)  #图像缩放
image = image.astype(np.float32)  #数据类型转换
image = np.multiply(image, 1.0 / 255.0)   #归一化  np.multiply 乘法

(3)删除包含特定字符的图片或者文件

path="./images_data/"
m1 = 'change_light'
files=os.listdir(path)
for f in enumerate(files):
	    if f.find(m1)>=0 :
        	os.remove(path+f)

2.对文本文件的处理

(1)在文件中添加内容,不覆盖原来的内容

txt_path = './test.txt'
msg = '写入内容'
f = open(csv_path, 'a+')
f.write(msg)
f.close()

其中,‘a+’模式为附加模式,表示在原来的文件中新增内容,不会覆盖原文件中的内容
(2)按行读取文件内容

file_path = './test.txt'
with open(file_path, 'r') as f :
	lines = f.readlines()  # 读取全部内容 ,并以列表方式返回

(3) 将第一个文件中的指定内容拷贝到另一个文件中

file1_path = './file1.txt'
file2_path = './file2.txt'
content_str = ' 指定的内容或者字符串'
with open(file1_path, 'r') as f1 :
    	lines = f1.readlines()  # 读取全部内容 ,并以列表方式返回
with open(file2_path, 'a') as f2 :
    	for line in lines:
    		if m in line:
    			f2.write(line)

(4) 对于一行内容按指定字符分割开,返回列表

file_path = './test.txt'
with open(file_path, 'r') as f :
	lines = f.readlines()  # 读取全部内容 ,并以列表方式返回      
	for line in lines:
		line_content = line.split(',')	

(5)读取一行内容中的数字

file_path = './test.txt'
 all_numbers = []
 with open(file_path, 'r') as f :
 	lines = f.readlines()  # 读取全部内容 ,并以列表方式返回      
 	for line in lines:
			line = line.strip()
			list_number = re.findall("\d+\.?\d*", line)
			all_numbers.append(list_number)

(6)读取一行内容中特定字符串后的数字

path = './test.txt'
	with open(path, 'r') as fo:
		lines = f.readlines()  # 读取全部内容 ,并以列表方式返回    
		for line in lines:
			line = line.strip()
			#epoch{0}, iter[352], train loss: 245.230523, valid precision: 0.358000, valid loss: 219.618176
			pattern = re.compile('epoch\{([\d]+)\}, iter\[([\d]+)\], train loss: ([\d\.]+), valid precision: ([\d\.]+)')
			res = pattern.findall(line)