当路径来自os.path.join

时间:2017-01-10 11:01:50

标签: python python-imaging-library os.path

我使用两个不同的脚本。在第一个,有这样的事情:

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无法打开。但是,当我打印"线"单独,它不会显示' \ 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:\0adtoolsv2\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" (打开文件时)(在第一个脚本中必需)

非常感谢Guillaume。

2 个答案:

答案 0 :(得分:1)

如何剥离" \ 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())

答案 1 :(得分:0)

你可以简单地使用:

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