获取错误是 unix os.path.getatime

error getting was unix with os.path.getatime

我想获取文件的unix时代,但是我得到一个错误。

代码:

import os
from time import time
from datetime import datetime
import openpyxl


# Data do dia em unix.
data_hoje = time()

# Parâmetro de classificação em unix.
quinze_dias = 1296000
trinta_dias = 2592000
tres_meses = float(7776000)
seis_meses = 15552000

# Definição das pastas de trabalho.
main_path = r'C:\Users\eduar\Documents'

book = openpyxl.Workbook()

book.create_sheet('Dados')
frutas_page = book['Dados']
frutas_page.append(['Nome', 'Último acesso', 'Última modificação', 'Tamanho'])

for root, subfolder, filenames in os.walk(main_path):
    for file in filenames:
        unix_arquivo = os.path.getatime(file)
        if data_hoje - unix_arquivo >= tres_meses:
            nome = os.path.basename(file)
            acesso = datetime.utcfromtimestamp(os.path.getatime(file)).strftime('%Y-%m-%d')
            modificacao = datetime.utcfromtimestamp(os.path.getmtime(file)).strftime('%Y-%m-%d')
            frutas_page.append([nome, acesso, modificacao])

book.save('S:/Teste.xlsx')

错误:

Traceback (most recent call last):
  File "S:\Documentos\ELO\main.py", line 27, in <module>
    unix_arquivo = os.path.getatime(file)
  File "S:\Python.9.7\lib\genericpath.py", line 60, in getatime
    return os.stat(filename).st_atime
FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado: 'adxregistrator.log'

错误发生在获取文件访问的 unix 时代。

"FileNotFoundError" 是赠品。这意味着无法找到您传递给 getatimefilefile 是由 os.walk 返回的,所以你可以很确定它确实存在,为什么找不到呢?因为你需要提供 path 文件,而 os.walk 只 returns filename.

试试这个:

import os

for root, subfolder, filenames in os.walk("/var/tmp/"):
    for file in filenames:
        unix_arquivo = os.path.getatime(os.path.join(root, file))
        print("file: " + file + ". atime: " + str(unix_arquivo))

请注意,即便如此,您仍可能会收到某些文件的“FileNotFoundError”。例如,符号链接可能需要特殊处理。