Qual é a melhor maneira de abrir um arquivo como leitura / gravação, se ele existir, ou se não existir, crie-o e abra-o como leitura / gravação? Pelo que li,file = open('myfile.dat', 'rw')
deveria fazer isso, certo?
Não está funcionando para mim (Python 2.6.2) e estou me perguntando se é um problema de versão ou se não deve funcionar assim ou o que.
A linha inferior é, eu só preciso de uma solução para o problema. Estou curioso sobre as outras coisas, mas tudo o que preciso é de uma boa maneira de fazer a parte de abertura.
O diretório anexo foi gravável por usuário e grupo, e não outro (eu estou em um sistema Linux ... então permissões 775 em outras palavras), e o erro exato foi:
IOError: esse arquivo ou diretório não existe.
python
linux
file-io
file-permissions
trh178
fonte
fonte
file
existe.Respostas:
Você deve usar
open
com ow+
modo:fonte
w
trunca arquivo existente. docs: Modos'r+'
,'w+'
e'a+'
abra o arquivo de atualização (note que'w+'
trunca o arquivo).open('myfile.dat', 'w')
é o suficiente.A vantagem da abordagem a seguir é que o arquivo é fechado corretamente no final do bloco, mesmo que uma exceção seja levantada no caminho. É equivalente a
try-finally
, mas muito mais curto.O método seek () define a posição atual do arquivo.
fonte
filename
?A boa prática é usar o seguinte:
fonte
Altere "rw" para "w +"
Ou use 'a +' para anexar (sem apagar o conteúdo existente)
fonte
r + significa leitura / gravação
fonte
Desde o python 3.4, você deve usar
pathlib
para "tocar" os arquivos.É uma solução muito mais elegante do que as propostas neste tópico.
A mesma coisa com os diretórios:
fonte
touch
atualiza o horário da última modificação quando usado.touch
na linha de comando no linux, portanto, presumo que seja o comportamento pretendido.Minha resposta:
fonte
exemplo:
Eu espero que isso ajude. [Para sua informação, estou usando o python versão 3.6.2]
fonte
open('myfile.dat', 'a')
funciona para mim, tudo bem.no py3k seu código gera
ValueError
:em python-2.6 ele gera
IOError
.fonte
Usar:
Nota: Os arquivos precisam ser fechados depois que você os abrir, e o gerenciador de contexto with é uma boa maneira de permitir que o Python cuide disso.
fonte
O que você quer fazer com o arquivo? Apenas escrevendo ou lendo e escrevendo?
'w'
,'a'
permitirá a gravação e criará o arquivo se ele não existir.Se você precisar ler um arquivo, ele deverá existir antes de abri-lo. Você pode testar sua existência antes de abri-lo ou usar uma tentativa / exceção.
fonte
Eu acho que
r+
nãorw
. Sou apenas iniciante, e foi o que vi na documentação.fonte
Coloque w + para escrever o arquivo, truncando se ele existir, r + para ler o arquivo, criando um se ele não existir, mas não estiver gravando (e retornando nulo) ou um + para criar um novo arquivo ou anexá-lo a um existente.
fonte
Então, você deseja gravar dados em um arquivo, mas apenas se eles ainda não existirem.
Esse problema é facilmente resolvido usando o pouco conhecido modo x para abrir () em vez do usual modo w. Por exemplo:
Se o arquivo estiver no modo binário, use o modo xb em vez de xt.
fonte
Se você deseja abri-lo para ler e escrever, suponho que você não queira truncá-lo enquanto o abre e deseja ler o arquivo logo após abri-lo. Portanto, esta é a solução que estou usando:
fonte
Pode ser que isso ajude
primeiro módulo OS de importação para o seu arquivo py
crie uma variável chamada save_file e defina-a como o arquivo que você deseja transformar em html ou txt, neste caso, um arquivo txt
defina uma função que usará o método de arquivo os.path.is para verificar se o arquivo existe e, caso contrário, ele criará um arquivo
e, finalmente, chame a função
fonte
fonte