Eu não acho que essa seja uma pergunta do Python. É o nível do sistema. E nesse nível, abrir um arquivo é uma operação totalmente distinta da leitura de um arquivo. Eu não sou um especialista em qualquer extensão da imaginação em internos do Linux, mas aqui estão alguns fatos básicos:
- Um arquivo é aberto com a chamada de sistema aberta (2).
- Um arquivo é lido com a chamada do sistema read (2)
- Existe um sinalizador para open (2) que instrui o sistema a não atualizar o horário de acesso quando read (2) é chamado. Chama-se O_NOATIME
- Você pode inferir a partir disso que open (2) não atualiza o tempo de acesso
Se você pensar sobre o que a palavra acesso significa, isso faz sentido. open (2) retorna um descritor de arquivo que pode ser usado subseqüentemente para ler o arquivo. Para usar uma analogia grosseira, é como ter um passe de acesso total para um concerto. Até que você apareça e comece a bater em groupies no backstage você não acessou nada. ;)