如何在 python 中使用 scp 获取 os.system 的最新文件?

How to get the latest file with os.system using scp in python?

我想使用pythonos.system库到get/scp来自远程UNIX目录的最新文件夹,这是一个文件夹名称包括日期时间的系统,例如:

[usr1@server1 stats_from_dir]$ pwd
/tmp/dir1/stats_from_dir

[usr1@server1 stats_from_dir]$ ls -alrth
drwxr-x---  2  23K Aug 28 12:50 pmexport_20200825
drwxr-x---  2  23K Aug 28 12:50 pmexport_20200826
drwxr-x---  2  21K Aug 28 12:50 pmexport_20200827

我可以这样获取所有文件夹;

import os
    
get_files = 'scp -r usr1@10.1.1.39:/tmp/dir1/stats_from_dir/* /dir2/.'
    
os.system(get_files)

但是我怎样才能只得到最新的文件夹呢?有没有办法在 os.system 带参数的库中做到这一点,而不使用其他库,如 paramiko、subprocess ..etc?

你知道文件夹的实际日期吗?

假设最后一个文件夹是昨天

然后用dateetime.date编译昨天的日期,用datetime.timedelta

减去一天

然后把昨天用strftime转成你需要的强格式

最后,将这一天附加到您使用 os.system 的字符串中。

import os
import datetime
    

yesterday = datetime.date.today() - datetime.timedelta(days=1)
yesterday_string = yesterday.strftime('%Y%m%d')

get_files = 'scp -r usr1@10.1.1.39:/tmp/dir1/stats_from_dir/pmexport_{} /dir2/.'.format(yesterday_string)
    
os.system(get_files)

试试这个:

import os
    
get_files = "scp -r usr1@10.1.1.39:/tmp/dir1/stats_from_dir/$(ssh usr1@10.1.1.39 'ls -t /tmp/dir1/stats_from_dir/ | head -1') /dir2/."
    
os.system(get_files)