Manipulação de arquivos com o módulo OS
Além do objeto File retornado por open(), as operações de E / S de arquivo também podem ser executadas usando a biblioteca interna do Python, que possui um módulo de sistema operacional que fornece funções dependentes do sistema operacional úteis. Essas funções executam operações de leitura / gravação de baixo nível no arquivo.
o open()A função do módulo OS é semelhante ao open () embutido. No entanto, ele não retorna um objeto de arquivo, mas um descritor de arquivo, um número inteiro exclusivo correspondente ao arquivo aberto. Os valores 0, 1 e 2 do descritor de arquivo representam streams stdin, stdout e stderr. Outros arquivos receberão um descritor de arquivo incremental de 2 em diante.
Como no caso de open() função embutida, os.open()A função também precisa especificar o modo de acesso ao arquivo. A tabela a seguir lista vários modos, conforme definido no módulo os.
Sr. Não. | Módulo OS e descrição |
---|---|
1 | os.O_RDONLY Aberto apenas para leitura |
2 | os.O_WRONLY Aberto apenas para escrita |
3 | os.O_RDWR Aberto para leitura e escrita |
4 | os.O_NONBLOCK Não bloqueie ao abrir |
5 | os.O_APPEND Anexar em cada gravação |
6 | os.O_CREAT Criar arquivo se ele não existir |
7 | os.O_TRUNC Truncar tamanho para 0 |
8 | os.O_EXCL Erro se criar e o arquivo existir |
Para abrir um novo arquivo para gravar dados nele, especifique O_WRONLY assim como O_CREATmodos, inserindo o operador pipe (|). A função os.open () retorna um descritor de arquivo.
f=os.open("test.dat", os.O_WRONLY|os.O_CREAT)
Observe que os dados são gravados no arquivo de disco na forma de string de bytes. Portanto, uma string normal é convertida em string de bytes usando a função encode () como anteriormente.
data="Hello World".encode('utf-8')
A função write () no módulo os aceita esta string de bytes e o descritor de arquivo.
os.write(f,data)
Não se esqueça de fechar o arquivo usando a função close ().
os.close(f)
Para ler o conteúdo de um arquivo usando a função os.read (), use as seguintes instruções:
f=os.open("test.dat", os.O_RDONLY)
data=os.read(f,20)
print (data.decode('utf-8'))
Observe que a função os.read () precisa do descritor de arquivo e do número de bytes a serem lidos (comprimento da string de bytes).
Se você deseja abrir um arquivo para operações simultâneas de leitura / gravação, use o modo O_RDWR. A tabela a seguir mostra funções importantes relacionadas à operação de arquivo no módulo OS.
Sr. Não | Funções e descrição |
---|---|
1 | os.close(fd) Feche o descritor de arquivo. |
2 | os.open(file, flags[, mode]) Abra o arquivo e defina vários sinalizadores de acordo com os sinalizadores e, possivelmente, seu modo de acordo com o modo. |
3 | os.read(fd, n) Leia no máximo n bytes do descritor de arquivo fd. Retorna uma string contendo os bytes lidos. Se o final do arquivo referido por fd foi alcançado, uma string vazia é retornada. |
4 | os.write(fd, str) Escreva a string str no descritor de arquivo fd. Retorna o número de bytes realmente gravados. |