2

私は Python でファイルを解凍する複数の方法を試しましたが、それぞれの方法は間違った作成時間で終わります (Python がそのファイルの新しいコピーを作成し、圧縮されたファイルから実際に抽出したわけではないため)。たとえば、2012 年 12 月 21 日に作成されたファイルは、Python で抽出すると今日の作成日が表示されますが、別のもの (WinZip など) を使用すると、ファイルの作成時刻は変更されません。

作成時間を変更せずに Python を使用してファイルを解凍する方法はありますか?

@Jason Sperske、私が使用しているコードは次のとおりです。

   zf = zipfile.ZipFile(fn)
   for name in zf.namelist():
        filename = os.path.basename(name)
        zf.extract(name, filepath)
    zf.close()

別のバージョン:

zf = zipfile.ZipFile(fn)
for name in zf.namelist():
    source = zf.open(name)
    target = open(os.path.join(filepath, filename), "wb")
    with source, target:
    shutil.copyfileobj(source, target)

また、python内からwinzipを呼び出しました。動作しますが、面倒です。多くのウィンドウが開き、ウィンドウを探索します。

4

1 に答える 1

2

Python でファイルの作成時刻を設定する一般的な方法はありませんがos.utime、変更時刻とアクセス時刻を設定するために使用できます。

Windows ファイルシステムではwin32file、ファイルの作成時に時間を指定するために使用できます。詳細については、この回答を参照してください。

Linux ファイルシステムでは、「作成日」自体は実際には存在せず、inode の最終変更タイムスタンプのみが存在します。これを編集するには、ファイルシステム自体を (アンマウント中に) ハックするか、システム時刻を変更するか、カーネルをハックして inode を編集できるようにする必要があります。この回答は、後者の 2 つのソリューションを示しています。

Mac ではsetfile -d、最初にインストールする必要がありますが、呼び出して作成日を変更できます。ドキュメントはこちらにあります。

BSD やその他のオペレーティング システムについては不明です。

于 2013-11-21T16:02:24.530 に答える