编写pytohn脚本时通常需要批处理。

 

列出指定目录下的所有文件/文件夹

 os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表,但有个很明显的缺点,它的默认顺序不是有序的或者说不是通常的顺序(不知道用啥排的)。

由于返回值是list类型,所以可以使用sort()



import os

path = "./Pictures/images/"
files = os.listdir(path)
for filename in files:
print(filename)


结果(可见此时并非有序):

python中os.listdir( )函数读取文件夹_字符串

现进行排序,sort是根据字典序排,为了更加准确,应将字符串转换为数字排序。



import os

path = "./Pictures/images/"
files = os.listdir(path)

#files.sort()
files.sort(key = lambda x:int(x[:-4]))

for filename in files:
print(filename)


 

处理文件名

1、去除前导零



import os

path = "./Pictures/images/"
files = os.listdir(path)

#files.sort()
files.sort(key = lambda x:int(x[:-4]))

for filename in files:
filename = str(int(filename[:-4])) + ".jpg"
print(filename)


python中os.listdir( )函数读取文件夹_字符串_02

 

2、列出包含指定字符串的文件



import os

path = "./Pictures/images/"
files = os.listdir(path)

files.sort(key = lambda x:int(x[:-4]))

for filename in files:
if "1" in filename:
print(filename)


python中os.listdir( )函数读取文件夹_文件名_03

 

 3、列出以指定字符串开头或结尾的文件



import os

path = "./Pictures/images/"
files = os.listdir(path)

files.sort(key = lambda x:int(x[:-4]))

print("start with \"001\"")
for filename in files:
if filename.startswith("001"):
print(filename)

print("end with \"2.jpg\"")
for filename in files:
if filename.endswith("2.jpg"):
print(filename)


python中os.listdir( )函数读取文件夹_python_04

 

 完整的程序:

将images中的文件经均值模糊后保存到images_blur,对应的文件名不变。



import os
import cv2
import numpy as np

def solve():
input_dir = "./Pictures/images/" # 保存截取的图像目录
output_dir = "./Pictures/images_blur" # 读取图片目录表
image_list=os.listdir(input_dir) #获得文件名
image_list.sort()
index = 1
for file in image_list:
print('正在处理图像: %s' % index)
img_path = input_dir + file
print(img_path)
img = cv2.imread(img_path)

img = cv2.blur(img, (3,3))

cv2.imwrite(output_dir + '/' + file,img)
print(output_dir + '/' + file)

index += 1


if __name__ == '__main__':
solve()


 

 


个性签名:时间会解决一切