localpath = 'U:\\'
utime = sftp.stat("/TestBTEC/").st_mtime
last_modified = datetime.fromtimestamp(utime)
if (datetime.now()-last_modified)<=timedelta(hours=24):
sftp.get(last_modified, localpath)
我收到以下异常错误: 例外:datetime.datetime(2012,2,15,9,4,58)类型的未知类型
答案 0 :(得分:5)
试试这个:
from datetime import datetime, timedelta
import stat
import paramiko
ssh = paramiko.SSHClient()
...
ssh.connect(host, **params)
...
sftp = ssh.open_sftp()
...
utime = sftp.stat(PATH_TO_REMOTE_FILE).st_mtime
last_modified = datetime.fromtimestamp(utime)
if (datetime.now()-last_modified)<=timedelta(hours=24):
do something with your file
答案 1 :(得分:0)
在pandas
的帮助下,您可以拥有一个非常不错的单线。
import pandas as pd
import paramiko
# your sftp config here
sftp = paramiko.SFTPClient.from_transport(transport)
files = pd.DataFrame([attr.__dict__ for attr in sftp.listdir_attr()]).sort_values("st_mtime", ascending=False)
files
_flags attr filename longname st_atime st_gid st_mode st_mtime st_size st_uid
2 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 76648 Apr... 1556659214 1004 33188 1556612771 76648 24212
6 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 72714 Apr... 1556535159 1004 33188 1556527667 72714 24212
3 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 64897 Apr... 1556540969 1004 33188 1556288975 64897 24212
4 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 59714 Apr... 1556540969 1004 33188 1556110171 59714 24212
1 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 53655 Apr... 1556540969 1004 33188 1556005897 53655 24212
0 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... -rw-r--r-- 1 24212 1004 45426 Apr... 1556540969 1004 33188 1555600649 45426 24212
5 15 {} test.txt -rw-r--r-- 1 24212 1004 0 Apr... 1556540969 1004 33188 1555588091 0 24212
答案 2 :(得分:0)
remote_path = '/tmp'
for f in sorted(ftp_client.listdir_attr(remote_path), key=lambda k: k.st_mtime, reverse=True):
print(f.filename)
这将打印以最新修改的文件开头的文件名。