O que é o modo anexo em um arquivo aberto?
Há duas formas de ver os ficheiros. Uma é como um conjunto de blocos de informação, que você pode ler e acessar em qualquer ordem.A outra é como um fluxo de bytes. Ao ler, você começa no início, e ao ler, você avança um contador de posição do arquivo para cada byte lido.
Na escrita, é semelhante. À medida que escreve, o armazenamento do ficheiro é alocado (como para acesso aleatório). Cada byte que você escreve é contado em um ponteiro de posição do arquivo. Ao fechar o ficheiro, este torna-se o comprimento do byte do ficheiro.
Então o que acontece se escrever um ficheiro, feche-o, e depois abra-o para escrever novamente?
Podemos começar de 0 novamente e SOBRESCRITAR o conteúdo existente.
Or podemos começar do fim, inicializando a nossa posição de ficheiro para ser o comprimento do que já foi escrito, e adicionar o nosso novo conteúdo lá. Este é o modo APPEND.
Novo conteúdo é anexado ao antigo.
Aqui está um detalhe que na verdade não afeta você, mas ajudará a visualizar como ele funciona.
Desde que o armazenamento subjacente é alocado em blocos de algum tamanho, ao invés de byte por byte, há algum mecanismo adicional envolvido. Ao escrever, quando os blocos são arquivados, eles são escritos em disco, com o último sendo escrito em close.
Quando você começa a anexar, você tem que ler esse último bloco parcial, e começar a preenchê-lo no ponto em que você parou. O comprimento do byte do arquivo é toda a informação que você precisa para calcular que.
Após isso ser feito, ele procede exatamente como qualquer outra operação de escrita; os blocos são escritos quando preenchidos. O modo APPEND afeta apenas a configuração inicial de onde começar a escrever.
Muitos sistemas de arquivos que suportam o modo stream também permitem que você altere diretamente onde no arquivo você está lendo ou escrevendo, com operações que permitem modificar a posição do arquivo para operações subseqüentes.
Isso quebra a abstração de um puro stream-of-bytes, dando-lhe acesso aleatório ao arquivo. Mas você pode definir a posição do arquivo, e ler uma parte específica de um arquivo, ou sobrescrever uma parte específica de um arquivo.
Isso ilustra como toda a visão do "fluxo de bytes" de um arquivo é na verdade uma camada no topo do modelo de armazenamento do bloco.
Então se você quiser modificar um arquivo de acesso aleatório? Talvez modificar os primeiros 100 bytes?
Abrir com o modo APPEND. A posição inicial do arquivo não é importante aqui; o importante é que você não descarte o conteúdo original do arquivo e comece de novo. Abrir com o modo SOBREWRITE dar-lhe-á um ficheiro vazio para começar com.
Artigos semelhantes
- O que é correto, "por favor encontre o anexo" ou "por favor encontre o anexo"?
- Como enviar corretamente um arquivo JPEG/JPG como anexo de e-mail
- Devo levar isto pessoalmente se a minha paixoneta me deixa em "aberto" no Snapchat? Nós nos "Snapchat" e depois de um pouco ele me deixa em "aberto".
- Por que eu recebo "objeto numpy.ndarray não tem erro de atributo em anexo"?