私はプログラミングが初めてで、過去24時間以内に作成または変更されたフォルダからファイルを検出するためにPythonを使用してスクリプトを作成しなければならない課題に取り組んでいますそれらのファイルを別のディレクトリに移動します。Pythonで時間範囲固有のファイルを移動する
ファイルの作成日と変更日を印刷するコードを書きました. には、24時間以上前に変更された古いファイルもソートされる関数があります。しかし、私は実際にそれらの特定のファイルを取得し、それらを新しいフォルダに転送するスクリプトを作成することに苦労しています。これは私のコードの最初の部分である:
import os,time
import datetime
import shutil
now = dt.datetime.now()
ago = now-dt.timedelta(hours=24)
strftime = "%H:%M %m/%d/%Y"
created = 'C:\\Users\\Jacquelin\e\Desktop\\created'
dest = 'C:\\Users\\Jacqueline\\Desktop\\dest'
for root, dirs,files in os.walk(created):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print "True: ", fname, " at ", mtime.strftime("%H:%M %m/%d/%Y")
else:
print False
for fname in os.listdir(created):
if mtime > ago:
shutil.move(path, dest)
print "moved to dest", fname
私はファイルを転送するshutil.moveを使用していて、万人things--を試してみましたが、それを把握することはできません!私は、これらを関数を単純化するために使うことにも取り組んでいます。これまでのところ、これは私が持っているものです。
「移動」機能についてはdef find_info(): #this first func. works fine.
for root, dirs, files in os.walk(created):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print True
else:
print False
、私は、これは正しい考えであるように感じますが、渡す変数を知らない、私は空の括弧を残してきました。そしては、がブーリアンの狂った長いリストを返します。そう。
def move():
for fname in os.listdir(created):
path = os.path.join(root, fname)
if find_info(fname) == True:
shutil.move(path, dest)
print "moved to dest", fname
print find_info() #variable? is one even needed?
print move() #variable????
print os.listdir(dest)
print os.listdir(created)
私はどの変数を関数に渡すべきかわかりません。その後、ファイルが実際に転送されたかどうかを確認するためにディレクトリを印刷しています。悪いことは動かないでしょう。
ありがとうございます!
あなたは 'shutil.move'をどのように使っているのか、何がうまくいかないのか説明できますか?エラーメッセージなど?また、バックスラッシュは '\ n 'のように特別な意味を持っているので、' 'c:\\ Users \\ ...」'または '(os)を使用してエスケープする必要があるので、 .path.join'。 –
私は自分のコードを変更しました。元のメッセージの上に置きます。 shutil.moveを使用すると、ファイルを移動しないだけです!私はプログラムが元と目的地のディレクトリを印刷しているが、転送は行われていない。 – nikkiy