如何快速从一个目录切换到另一个目录

时间:2016-01-25 10:03:03

标签: python directory pickle

我在一个目录中有一个巨大的图像列表,另一个(.txt文件)中有另一个相应的注释列表。
我需要在匹配的图像注释后对每个图像执行操作,并将其保存到另一个目录中。有没有一种优雅的方法,不是每次都要做三次chdir? 也许使用cPickle或用于快速文件管理的任何库?

import glob
from PIL import Image

os.chdir('path_images')
list_im=glob.glob('*.jpg')
list_im.sort()
list_im=path_images+list_im
os.chdir('path_txt')
list_annot=glob.glob('*.txt')
list_annot.sort()
list_annot=path_txt+list_im

for i in range(0,len(list_images)):

Joel指出,如果在名称

中包含路径,则os操作不是必需的
   #os.chdir('path_images')
   im=Image.open(list_im[i])
   #os.chdir('path_text')
   action_on_image(im,list_annot[i])
   #os.chdir('path_to_save_image')
   im.save(path_to_save+nom_image)

我是Python的真正初学者,但我确信我的代码效率极低且可以改进。

1 个答案:

答案 0 :(得分:2)

必须chdir(以及FWIW,您真的不想依赖当前的工作目录)。在代码中的任何地方使用绝对路径,你就没事了。

import os
import glob
from PIL import Image

abs_images_path = <absolute path to your images directory here>
abs_txt_path = <absolute path to your txt directory here>
abs_dest_path = <absolute path to where you want to save your images>

list_im=sorted(glob.glob(os.path.join(abs_images_path, '*.jpg')))
list_annot=sorted(glob.glob(os.path.join(abs_txt_path, '*.txt')))

for im_path, txt_path in zip(list_im, list_annot):
   im = Image.open(im_path)
   action_on_image(im, txt_path)
   im.save(os.path.join(abs_dest_path, nom_image))

请注意,如果您的路径与安装脚本的位置相关,则可以使用os.path.dirname(os.path.abspath(__file__))获取脚本的目录路径