0

これもおそらく非常に単純な質問です。.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 で区切られたすべてのファイル名

4

2 に答える 2

0

エラー メッセージ: ファイル名が長すぎます。次に、\t で区切られたすべてのファイル名

ファイル内のすべてのファイル名barcodefile1はタブで区切られていると思います。このようなタブ区切りのエントリを読むには、次のようなことを試してください。これは、ファイル内のすべてのエントリがタブ区切りで1 行にあることを前提としています。また、行が非常に大きいと想定しているため、ファイルをチャンクで読み取ろうとします。

>>> 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

于 2013-06-04T04:26:42.337 に答える