如何为目录中的多个文件运行脚本?

时间:2017-03-27 21:30:52

标签: python file for-loop directory

我有一个脚本,我想为目录中的所有文件运行。我可以找到的所有示例都使用我知道不再适用于python 3.x的文件。

所以这是我在实现之前所尝试的:

import sys, os, cv2

path = 'C:\\Users\\telli\\Desktop\\Test Shapes\\Shapes\\Squares'

for filename in os.listdir(path):
    for file in files:
        if file.endswith('.jpg'):
            os.system ('C:\\Users\telli\\Desktop\\test.py {}'.format(root + '\\' + file))

那么我该怎么改呢?我已经看过使用open,但我确定不太确切。

你还能告诉我一行代码会遗漏主文件夹中的某个文件/文件夹吗?

我尝试过但没有任何反应:

import sys, os

path = 'C:\\Users\\telli\\Desktop\\Test Shapes\\Shapes\\Squares'

for file in os.listdir(path):
    if file.endswith('.jpg'):
        img = cv2.imread(file)
        #print(img)

        #Converting the image to Grayscale
        grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

        ret,thresh = cv2.threshold(grey,127,255,1)

        im2,contours, h = cv2.findContours(thresh, 1, cv2.CHAIN_APPROX_SIMPLE)
        contours.sort(key = len)

        cv2.imshow('img',img)
        cv2.waitKey(0)
        #os.system('C:\\Users\telli\\Desktop\\test.py {}'.format(root + '\\' + file))

由于

1 个答案:

答案 0 :(得分:0)

尝试glob模块。

import glob
path = 'C:/Users/telli/Desktop/Test Shapes/Shapes/Squares'
filenames = glob.glob(path + '/*.gif')
for filename in filenames:
    # Do something

要遗漏文件:

  • 在for循环中添加if语句以忽略您不想要的文件
  • 将您的glob更改为仅选择您想要的文件

e.g。

>>ls
this_is_a_good_file.gif
this_is_a_good_file_2.gif
this_is_a_bad_file.gif

glob.glob(path + '/*good*.gif')

将排除'this_is_a_bad_file.gif'