当路径来自 os.path.join 时打开图像文件

Open an image file when the path is made from os.path.join

我使用两种不同的脚本。在第一个中,有这样的东西:

f = open(filename, 'r')

file, file_ext = os.path.splitext(filename)

thumb=open(file +"_thumb.txt","w")

  for line in f:
   array = line.split(',')

   a = str(array[0])   

   t=a[11:14]+ "\" + a[15:19] + "\" + (a[11:])+".jpg" +"\n"

   thumb.write(t)

thumb.close()

第二个:

Dirname = str(self.lneDirIn1.text())

f=open(file +"_thumb.txt","r")

for line in f:
   line=str(line)

   print(line)

   cl_img_path=os.path.normpath((os.path.join(Dirname,line)))

   print(cl_img_path)

   cl_img=Image.open(str(cl_img_path))

我在运行第二个的时候出现错误,因为os.path.join实际上加入了该行的“\n”,所以cl_img打不开。但是,当我单独打印 "line" 时,它不显示 '\n'

这是错误:

Traceback (most recent call last):
  File "./midas/mds_central_line_thumbs.py", line 118, in pbtOKClicked
    self.process()
  File "./midas/mds_central_line_thumbs.py", line 105, in process
    cl_img=Image.open(str(cl_img_path))
  File "C:[=13=]adtoolsv2\libs\Python27\lib\site-packages\PIL\Image.py", line 1952, in open
    fp = __builtin__.open(fp, "rb")
IOError: [Errno 22] invalid mode ('rb') or filename: 'k:\SBU_3\USA\PIO2015\04-TEST-SAMPLES\USCASFX1608\D16MMDD\B3\Images\051\0151\051_0151_00021466.jpg\n'

我希望我的第二个脚本在打开文件时不考虑“\n”(第一个脚本中必需)

非常感谢,纪尧姆。

您可以简单地使用:

lines = file.read().splitlines()
for line in lines :
    print line #Wouhou, no \n

读取行时去掉“\n”怎么样?

line=str(line).strip()

或者加入路径的时候?

cl_img_path=os.path.normpath((os.path.join(Dirname, line.strip())))

或者打开图片的时候?

cl_img=Image.open(str(cl_img_path).strip())