基本上我想在我的脚本中做的是将一些文件从dest_path复制到source_path。您可以进行设置并查看其工作原理 -
但由于某种原因,它会复制第一个文件并告诉我其余部分已被复制,但事实并非如此。有什么东西我没有看到或我做错了吗?我对python很新,很抱歉如果我做了一些明显错误的事情,我就是看不到它......
import time, shutil, os, datetime
source_path = r"C:\SOURCE" # Your Source path
dest_path = r"C:\DESTINATION" # Destination path
file_ending = '.txt' # Needed File ending
files = os.listdir(source_path) # defines
date = datetime.datetime.now().strftime('%d.%m.%Y') # get the current date
while True:
print("Beginning checkup")
print("=================")
if not os.path.exists(source_path or dest_path): # checks if directory exists
print("Destination/Source Path does not exist!")
else:
print("Destination exists, checking files...")
for f in files:
if f.endswith(file_ending):
new_path = os.path.join(dest_path, date, )
src_path = os.path.join(source_path, f)
if not os.path.exists(new_path): # create the folders if they dont already exists
print("copying " + src_path)
os.makedirs(new_path)
shutil.copy(src_path, new_path)
else:
print( src_path + " already copied")
# shutil.copy(src_path, new_path)
print("=================")
print('Checkup done, waiting for next round...')
time.sleep(10) # wait a few seconds between looking at the directory
答案 0 :(得分:2)
像@ user2357112提到if not os.path.exists(source_path or dest_path)
没有按照你的想法行事。改为
if not os.path.exists(source_path) or not os.path.exists(dest_path):
这只会复制一个文件,因为它会在new_path
中第一次创建目录if
。这样的事情应该有效:
if f.endswith(file_ending):
new_path = os.path.join(dest_path, date, )
src_path = os.path.join(source_path, f)
if not os.path.exists(new_path): # create the folders if they dont already exists
os.makedirs(new_path)
if not os.path.exists(os.path.join(new_path,f)):
print("copying " + src_path)
shutil.copy(src_path, os.path.join(new_path,f))
else:
print( src_path + " already copied")
如果new_path
目录不存在则创建目录(这应该只发生一次,此if
可以移出循环以及new_path
初始化)。在单独的if
检查文件是否存在于该目录中,如果没有将文件复制到该位置,则打印您的消息。