1

FTPサーバー(本日更新)で最新のファイル/ディレクトリを取得する必要があります。この解決策を発見しました。

def callback(line):
    try:
        #only use this code if you'll be dealing with that FTP server alone
        #look into dateutil module which parses dates with more flexibility
        when = datetime.strptime(re.search('[A-z]{3}\s+\d{1,2}\s\d{1,2}:\d{2}', line).group(0),     "%b %d %H:%M")
        today = datetime.today()
        if when.day == today.day and when.month == today.month:
            pass
            print "Updated file"
            #####THE CODE HERE#######
    except:
        print "failed to parse"
        return

ftp.retrlines('LIST', callback)

しかし、このコードでは、「解析に失敗した」倍数と「更新されたファイル」の倍数のみが出力されます。しかし、今日更新されたファイル/ディレクトリのファイル/ディレクトリ名が必要です。ディレクトリ名を取得するために「#####THECODEHERE#######」部分に貼り付けるコードは何ですか?

4

2 に答える 2

1

Python ftplibのドキュメントを見ると、retrlines()からの出力は、ファイル名が最後の「列」である行になるようです。

-rw-r--r--   1 ftp-usr  pdmaint     5305 Mar 20 09:48 INDEX

したがって、単純な分割と最後のフィールドの取得が機能するはずです。ただし、ファイル/フォルダ名に空白文字が含まれていない場合にのみ機能します。

name = line.split()[-1]
print(name) # Should be "INDEX"

空白を含む名前を処理する場合は、より高度な解析を使用することをお勧めします。

于 2011-08-08T11:59:51.147 に答える
1

nlst()ではなく、ファイル名を取得するために使用しますretrlines()

ファイル名に空白がないとは思いません。

于 2011-08-08T12:39:35.713 に答える