1

Python で非常に大きなファイルとディレクトリ システムを繰り返し処理しています。私はベースディレクトリから始めていますが、ディレクトリがベースディレクトリを超えて1フォルダーの深さまでしかないことを知っています。次のようなコードを使用して、base_directories children フォルダー内の各ファイルの 2 行目を読み取ろうとしています。

a_list = []
  for dir, files in os.walk(base_directory):
    for file in files:
      f=open(file, 'r')
      for line in f:
        #reads in the second line
        if line==1:
          a_list.append(line)
          break
      f.close() 

しかし、「for dir, file in os.walk(base_directory)」という行で特にアンパックするには値が多すぎます。ご協力ありがとうございます。

4

1 に答える 1

2

3タプルを解凍する必要があります

walk(top, topdown=True, onerror=None, followlinks=False)
    ディレクトリ ツリー ジェネレーター。

    最上位をルートとするディレクトリ ツリー内の各ディレクトリ (最上位を含む)
    それ自体、ただし「.」を除く および '..')、3 タプルを生成します

        dirpath、dirnames、filenames

例えば。

for dir, dirnames, files in os.walk(base_directory):

また、これは機能しません。line初心者向けの文字列です

  for line in f:
    #reads in the second line
    if line==1:
      a_list.append(line)
      break

このようなものに変更できます

  for i, line in enumerate(f):
    #reads in the second line
    if i==1:
      a_list.append(line)
      break

しかし、私はこれがより簡単な方法だと思います

  import os
  a_list = []
  for dirpath, dirnames, files in os.walk(base_directory):
    for file in files:
      with open(os.path.join(dirpath, file), 'r') as f:
        next(f)                 # skip the first line
        a_list.append(next(f))  # store the second line
于 2013-05-31T19:48:21.780 に答える