Python 3.x python shutil根据条件将文件从源目录复制到远程目录
我希望使用Python 3.x python shutil根据条件将文件从源目录复制到远程目录,python-3.x,python-datetime,shutil,Python 3.x,Python Datetime,Shutil,我希望使用shutil()将文件从源目录复制到远程目录,但是我需要进行以下几项检查 不要将零字节文件复制到远程 如果该文件已在远程上退出,则不要再次复制它,除非源中的文件已更改内容或更新 我正在寻找当前月份的目录,因此,如果该目录在当前月份可用,则遍历到该目录,就像当前月份应该是一月一样 导入模块: import os import glob import shutil import datetime 选择当前月份的变量: Info_month = datetime.datetime.now(
shutil()
将文件从源目录复制到远程目录,但是我需要进行以下几项检查
import os
import glob
import shutil
import datetime
选择当前月份的变量:
Info_month = datetime.datetime.now().strftime("%B")
代码段:
for filename in glob.glob("/data/Info_month/*/*.txt"):
if not os.path.exists("/remote/data/" + os.path.basename(filename)):
shutil.copy(filename, "/remote/data/")
上面的代码不使用变量Info\u month
,但是,硬编码目录名是有效的
由于缺乏Python知识,我遇到了一些挑战
如何将变量Info\u month
包含到源目录路径中
如何检查不复制零字节文件
os.path.getsize(fullpathhere) > 0
我最基本的愚蠢逻辑:
for filename in glob.glob("/data/Info_month/*/*.txt"):
if os.path.getsize(fullpathhere) > 0 :
if not os.path.exists("/remote/data/" + os.path.basename(filename)):
shutil.copy(filename, "/remote/data/")
else:
pass
下面是对现有脚本的修复。这还没有尝试实现“源代码比目标代码更新”的逻辑,因为您没有明确询问这一点,而且这可能已经太广泛了
for filename in glob.glob("/data/{0}/*/*.txt".format(Info_month)):
# The result of the above glob _is_ a full path
if os.path.getsize(filename) > 0:
# Minor tweak: use os.path.join for portability
if not os.path.exists(os.path.join(["/remote/data/", os.path.basename(filename)])):
shutil.copy(filename, "/remote/data/")
# no need for an explicit "else" if it's a no-op
不是我的反对票,但你似乎把许多非常基本的问题合并到一篇文章中。获取堆栈溢出问题答案的一个好方法是只问一个问题,并在谷歌搜索答案后准确演示您的困境。例如,“如何将变量插入Python字符串”是第一个谷歌结果。使用月份名称作为目录名似乎是一个糟糕的主意。使用月号可以方便地在计算机上访问它们,并且在列出它们时也可以正确排序。@tripleee,非常感谢您的解释,确实由于某些原因,我需要在这里使用月名。再次感谢您的修复,对于数据检查
源代码比目标代码更新的文件内容,我将向用户提出另一个问题。。谢谢你的专业知识,如果我不理解,我会尝试用谷歌搜索,我会提出一个新问题,希望这是可以期待的。然而,我正在寻找两侧文件上的数据,如果这是相似的,那么不要覆盖,只从源文件中写入较新的位。