Python:拆分文件名列表

时间:2013-06-03 16:59:27

标签: python string list split

这可能是一个非常简单的问题;我在.txt文件中有一个文件名列表。我想编写一个脚本,分别获取每个文件名并从目录中获取它。但我似乎无法分割文件名。有一个错误说“文件名太长”,它试图将所有文件名放在一起。我试过这个:

#lots of other stuff

resultsdir1 = "/home/blah"

barcodefile1=sys.argv[1]
barcodes1 = [f.split("/")[0] for f in open(barcodefile1)]

#blahblah

for bc in barcodes1:
    file=open(resultsdir1+"/"+bc+".csv")

我对编程还很陌生,所以如果我犯了一个非常愚蠢的错误,请保持温和。脚本中有很多其他内容,我真的只想知道如何在barcodefile1中拆分名称(它是.txt文件)。我很感激任何帮助!

错误消息:文件名太长。然后是由\ t

分隔的文件的所有名称

2 个答案:

答案 0 :(得分:0)

  

错误消息:文件名太长。然后是文件的所有名称   由\ t

分隔

我认为文件barcodefile1中的所有文件名都是以制表符分隔的。尝试以下内容来阅读这些以制表符分隔的条目。这假定文件中的所有条目都是以制表符分隔的,并且在一行上。它还假设您的行非常大,因此尝试以块的形式读取文件。

>>> f = open('try.txt')
>>> left_over=''
>>> all_entries=[]
>>> def read_f():
...     return f.read(80)     #For very large files, you will be better off setting this to 1024 or multiples
... 
>>> for piece in iter(read_f,''): 
...     new_piece = left_over + piece.rstrip('\n')
...     new_piece_split = new_piece.split('\t')
...     all_entries.extend(new_piece_split[:-1])
...     left_over = new_piece_split[-1]
>>> all_entries.append(left_over)
>>> all_entries = filter(None, all_entries)
>>> f.close()

这将读取制表符分隔文件(即使它太大)并创建一个新列表all_entries。这类似于您的列表barcodes1

答案 1 :(得分:0)

这个例子怎么样:

import os
import csv

ROOT_DIR = '/home/blah'
with open('list-of-file-names.txt') as f:
   for line in f:
      filename = "{}.csv".format(line.strip())
      with open(os.path.join(ROOT_DIR,filename)) as the_file:
          reader = csv.reader(the_file)
          for row in reader:
              print row

当你说"从目录"中获取它时,你的意思并不清楚,所以我认为你的意思是打开它并阅读内容",这就是上面的代码确实