87

ftplibを使用してFTP経由でファイルをダウンロードするPythonスクリプトがあります。

私の現在のダウンロードコードは、ftplibdocsの例と同じように見えます。

ftp.retrbinary('RETR README', open('README', 'wb').write)

ここで、FTP経由でダウンロードされたファイルは、FTPサーバー自体のファイルと同じ最終変更時刻である必要があるという要件があります。から時間を解析できると仮定するとftp.retrlines('list')、ダウンロードしたファイルに変更時刻を設定するにはどうすればよいですか?

それが重要な場合、私はUNIXベースのOSを使用しています。

4

3 に答える 3

93

使用os.utime

import os

os.utime(path_to_file, (access_time, modification_time))

より複雑な例:https ://www.tutorialspoint.com/python/os_utime.htm

于 2016-08-03T21:40:18.180 に答える
20

ファイルの最終変更フィールドを編集するには、次を使用します。

os.utime(<file path>, (<access date epoch>, <modification date epoch>))

例:

os.utime(r'C:\my\file\path.pdf', (1602179630, 1602179630))

-エポックは、1970年1月1日から経過した秒数です。詳細を参照してください


datetimeバージョンをお探しの場合:

import datetime
import os

def set_file_last_modified(file_path, dt):
    dt_epoch = dt.timestamp()
    os.utime(file_path, (dt_epoch, dt_epoch))

# ...

now = datetime.datetime.now()
set_file_last_modified(r'C:\my\file\path.pdf', now)

-Pythonバージョン<3.3の場合は、dt_epoch = time.mktime(dt.timetuple())

于 2020-10-08T18:00:28.447 に答える
14

これを行うには2つの方法があります。1つは、参照統計がないファイルにタイムスタンプを設定する場合に必要なos.utime例です。

ただし、ファイルを一緒にコピーするshutil.copy()場合は、参照ファイルがあります。shutil.copystat()次に、アクセス許可ビット、最終アクセス時間、最終変更時間、およびフラグもコピーする必要がある場合は、の直後に使用できます shutil.copy()

そして、shutil.copy2両方を同時に行うことを目的としたものがあります...

于 2014-09-12T18:32:35.310 に答える