0

ファイルがディレクトリに追加または削除されたときのモニターを備えた小さなスクリプトがあります。次のステップは、ディレクトリに追加されたファイル (Windows バッチ ファイル) を実行するためのスクリプトを取得することです。サブプロセス呼び出しで変数を使用する方法を理解するのに苦労しています (これが達成できる最善の方法である場合)。誰か助けてくれませんか?どうもありがとう。コードはこれまでのところ次のようになっています。

import sys
import time
import os

inputdir = 'c:\\test\\'
os.chdir(inputdir)
contents = os.listdir(inputdir)
count = len(inputdir)
dirmtime = os.stat(inputdir).st_mtime

while True:
newmtime = os.stat(inputdir).st_mtime
if newmtime != dirmtime:
    dirmtime = newmtime
    newcontents = os.listdir(inputdir)
    added = set(newcontents).difference(contents)
    if added:
        print "These files added: %s" %(" ".join(added))
        import subprocess
        subprocess.call(%,shell=True)

    removed = set(contents).difference(newcontents)
    if removed:
        print "These files removed: %s" %(" ".join(removed))

    contents = newcontents
time.sleep(15)
4

1 に答える 1

1

これはあなたが望んでいたことをするはずです、それを少しきれいにしました。

import sys
import time
import os
import subprocess

def monitor_execute(directory):
    dir_contents = os.listdir(directory)
    last_modified = os.stat(directory).st_mtime
    while True:
        time.sleep(15)
        modified = os.stat(directory).st_mtime
        if last_modified == modified:
            continue
        last_modified = modified
        current_contents = os.listdir(directory)
        new_files = set(current_contents).difference(dir_contents)
        if new_files:
            print 'Found new files: %s' % ' '.join(new_files)

        for new_file in new_files:
            subprocess.call(new_file, shell=True)

        lost_files = set(dir_contents).difference(current_contents)
        if lost_files:
            print 'Lost these files: %s' % ' '.join(lost_files)

        dir_contents = current_contents
于 2013-07-10T13:04:33.843 に答える