1

ドライブを通過するスクリプトを作成しようとしています。ドライブのフォルダ構造は次のようになります。

| Folder 1
+--->Folder 1.txt
+--->Folder 1.nfo
| Folder 2
+--->Folder 2.doc
+--->Folder 2.nfo
+--->Folder 2.xls
| Folder 3
+--->Folder 3.txt
+--->Folder 3.nfo

古い私がやろうとしているのは、ディレクトリ内の各ファイルを読み取ることです。次に、ディレクトリを調べ終わったら、テキストファイルにログを書き込みます。私は現在、以下を使用して各ディレクトリとファイルを開きます。

logfile = open("log.txt")
for path, subdirs, files in os.walk(directory):
  txtfile = 0
  docfile = 0
  xlsfile = 0
  nfofile = 0
  for name in files:
    file = os.path.join(path, name)
    if file.endswith('.txt'):
      txtfile = 1
    elif file.endswith('.doc'):
      docfile = 1
    elif file.endswith('.xls'):
      xlsfile = 1
    elif file.endswith('.nfo'):
      nfofile = 1

    # if all files in a specific directory (Folder 1, Folder 2, etc) have been read, write line to log.txt

最後のファイルを確認する方法がわかりません。ログは、ディレクトリから欠落しているファイルを確認するために使用されます。これに関する助けをいただければ幸いです。

4

2 に答える 2

2

次のようなディレクトリにあるすべてのファイルを一覧表示できます:(ここから取得)

from os import listdir
from os.path import isfile, join
files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]

次に、次のようにファイルを確認します。

if file == files[-1]: # do stuff

または、繰り返してfiles簡単にすることもできます。完了したら、ログに記録します。これを行うことをお勧めします。

于 2012-12-18T02:45:38.620 に答える
0

これが機能するかどうかを確認します。

import os
import os.path as opath


for path, dirs, files in os.walk(directory):
    exts = {}
    for fn, ext in (opath.splitext(f) for f in files):
        exts[ext] = exts.get(ext, 0) + 1

    with open(opath.join(path, "extlog.txt"), "w") as log:
        log.write("\n".join(("%s|%s" % (k, v)) for k, v in exts.items()) + "\n")
于 2012-12-18T05:27:20.783 に答える