ディレクトリを実行してそこでファイルを処理するforループがありますが、一度に特定の数のファイルのみを処理したいと思います。たとえば、1000個のファイルがあるディレクトリがありますが、1日に処理できるのは250個だけなので、スクリプトを最初に実行すると、最初の250個、次の250個というように処理されます。
まず、ファイル名を、すでに同期されているファイルの名前を記録しているXMLファイルと照合して、2回目の処理を行わないようにします。次に、変数がある次のn個のファイルを処理したいと思います。synclimit = n
次のように、範囲内のステートメントをforループに追加することを考えました。
tree = ET.parse("sync_list.xml")
root = tree.getroot()
synced = [elt.text for elt in root.findall('synced/sfile')]
for filename in os.listdir(filepath) and in range (0, synclimit) :
if fnmatch.fnmatch(filename, '*.txt') and filename not in synced:
filename = os.path.join(filepath, filename)
result = plistlib.readPlist(filename)
ただし、これにより、ディレクトリ内の最初のn個のファイルのみが毎回チェックされると確信しています。範囲ステートメントをifステートメントに追加する必要がありますか?お気に入り:
tree = ET.parse("sync_list.xml")
root = tree.getroot()
synced = [elt.text for elt in root.findall('synced/sfile')]
for filename in os.listdir(filepath):
if fnmatch.fnmatch(filename, '*.txt') and filename not in synced and in range (0, synclimit):
filename = os.path.join(filepath, filename)
result = plistlib.readPlist(filename)
またはこれを行うためのより簡単な方法はありますか?ありがとうございました。