0
def startConnection(self):
    from ftplib import FTP
    self.ftp = FTP(self.loginServer)
    print 'Loging In'
    print self.ftp.login(self.username, self.password)
    data = []
    self.ftp.dir(data.append)
    for line in data:
        try:
            self.date_str = ' '.join(line.split()[5:8])
            newDate = time.strptime(self.date_str,'%b %d %H:%M')
            print newDate
            col_list = line.split()
            name = col_list[0]
            tempDir = {}

            if name.startswith('d'):
                tempDir['directory'] = newDate
            else:
                tempDir['file']=newDate

            self.dirInfo[col_list[8]] = tempDir
        except:
            print "**********Exception for line **********\n" + line + "\n**********Exception End**********"

この関数は正常に動作しています。newDate の値は 8 月 20 日 11:12 ですが、年が欠落しているため、デフォルトの年の値は 1900 であり、これは正しくありません。それをデバッグするために、私は ftp サーバーにログインし、「8 月 20 日 11:12」のようなタイムスタンプを表示している両方のケースで dir / ls を実行しました。しかし、ls -lTr を実行すると、その場合は年が表示されます。

私が欲しいのは、上記のコマンドを ftp に渡して結果を得る方法です。これを実行できるpython ftplibモジュールの機能はありますか。

4

2 に答える 2

1

試す

self.ftp.dir('-lTr', data.append)
于 2009-10-09T10:28:54.283 に答える
0

短い形式の日付を与えるコマンドを使用している場合、または渡されたさまざまな引数に対処したいls場合は、さまざまな形式の文字列で日付を解析するために複数回試行する必要がありますValueError。 -一致した形式に応じて成功した解析を処理します-1年以上前のファイルは、年を含むが時刻を含まない日付形式を報告することがよくあります(ここでは、おそらくデフォルトの00:00:00時間に固執できます) ; 年なしの形式で報告された最近のファイルには、現在の年がデフォルトで含まれている可能性があります。年を含む形式は変更されません。

于 2009-10-09T10:33:59.387 に答える