web-dev-qa-db-ja.com

pythonからファイルの最終変更時刻を設定するにはどうすればよいですか?

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

現在のダウンロードコードは、ftp libドキュメントの例のように見えます。

_ftp.retrbinary('RETR README', open('README', 'wb').write)
_

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

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

46
jdeuce

使用する - os.utime

import os

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

Pythonから直接これを行いたい場合は、os.utimedocs で詳細を確認できます。

50
Craig Citro

これを行うには2つの方法があります。 1つは上記のos.utimeの例です。これは、参照統計のないファイルにタイムスタンプを設定する場合に必要です。ただし、「shutil.copy()」を使用してファイルをコピーする場合、参照ファイルがあります。許可ビット、最終アクセス時刻、最終変更時刻、およびフラグもコピーしたい場合は、「shutil.copy()」の直後に「shutil.copystat()」を使用できます。

単一のコマンドでこれを行う「shutil.copy()」にフラグを追加しない理由はわかりません。別の著者によって実装されたようです。 1つはコピーを実装し、もう1つはcopystatを実装して、前者の欠落している機能を埋めます。

そして、両方を一度に実行することを目的とした「shutil.copy2」があります...