使用 shutil 有条件地移动文件

Moving files conditionally using shutil

我正在尝试将文件从源目录移动到 linux 中的目标目录,这些文件以 .text 扩展名结尾,时间戳使用 shutil 但有些工作不正常,看来我做错了什么。

下面是文件所在的源目录:

$ ls -l /samba/smb_out/
-rw-r-----. 1 user1 tam 266852 Dec 16 21:41 fostert.20201215.text
-rw-r-----. 1 user1 tam 266852 Dec 16 21:41 fostert.20201216.text

测试代码:

>>> tm_src = time.strftime("%Y%m%d")
>>> tm_dst = time.strftime("%Y%m%d-%H:%M:%S")
>>> src = "/samba/smb_out/"
>>> dst = "/samba/script_logs/"
>>> outfile = ( src + tm_src + ".text")
>>> text_files = [el for el in os.listdir(src) if el.endswith(".text") and path.isfile(path.join(src, el))]
>>> for file in text_files:
    shutil.move(path.join(src, file ), dst + "-" + tm_dst + ".log")
    
'/samba/script_logs/-20201216-21:32:59.log'
'/samba/script_logs/-20201216-21:32:59.log'

想要的应该是:

'/samba/script_logs/fostert.20201215.text-20201215-21:32:59.log'
'/samba/script_logs/fostert.20201215.text-20201216-21:32:59.log'

知道我做错了什么吗。

下面应该适合您,您只是错过了 for 循环中的 file

>>> for file in text_files:
      shutil.move(path.join(src, file ), dst + file + "-" + tm_dst + ".log")