파일이 존재하지 않으면 Python의 open()은 파일을 생성하지 않습니다.
파일이 존재하는 경우 또는 존재하지 않는 경우 파일을 생성하여 읽기/쓰기로 여는 가장 좋은 방법은 무엇입니까?가 읽은 바로는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★.file = open('myfile.dat', 'rw')
렇게게 하면? ???
저는 (Python 2.6.2)이 동작하지 않고 버전 문제인지, 아니면 동작하지 않는 것인지 궁금합니다.
요컨대, 저는 단지 그 문제에 대한 해결책이 필요합니다.다른 것도 궁금한데 오프닝만 잘하면 돼요.
동봉된 디렉토리는 다른 디렉토리가 아닌 사용자 및 그룹에서 쓸 수 있습니다(Linux 시스템 상에 있습니다).즉, permissions 775), 정확한 오류는 다음과 같습니다.
IOError: 해당 파일 또는 디렉토리가 없습니다.
하면 됩니다.open
w+
디세이블로그:
file = open('myfile.dat', 'w+')
다음 접근법의 장점은 블록의 끝에서 파일이 올바르게 닫히는 것입니다.이는 도중에 예외가 발생하더라도 마찬가지입니다.와 동등합니다.try-finally
짧습니다.
with open("file.dat","a+") as f:
f.write(...)
...
a+ 추가 및 읽기를 위한 파일을 엽니다.파일이 존재하는 경우 파일 포인터는 파일 끝에 있습니다.파일이 추가 모드로 열립니다.파일이 존재하지 않으면 읽고 쓸 새 파일이 생성됩니다. - Python 파일 모드
seek() 메서드는 파일의 현재 위치를 설정합니다.
f.seek(pos [, (0|1|2)])
pos .. position of the r/w pointer
[] .. optionally
() .. one of ->
0 .. absolute position
1 .. relative position to current
2 .. relative position from end
"rwa" 문자만 허용되며, "rwa" 문자 중 하나만 있어야 합니다. 스택 오버플로 질문 Python 파일 모드 세부 정보를 참조하십시오.
'''
w write mode
r read mode
a append mode
w+ create file if it doesn't exist and open it in write mode
r+ open for reading and writing. Does not create file.
a+ create file if it doesn't exist and open it in append mode
'''
예:
file_name = 'my_file.txt'
f = open(file_name, 'w+') # open file in write mode
f.write('python rules')
f.close()
[참고로 Python 버전 3.6.2를 사용하고 있습니다]
베스트 프랙티스는, 다음을 사용하는 것입니다.
import os
writepath = 'some/path/to/file.txt'
mode = 'a' if os.path.exists(writepath) else 'w'
with open(writepath, mode) as f:
f.write('Hello, world!\n')
"rw"를 "w+"로 변경합니다.
또는 추가할 때 'a+'를 사용합니다(기존 콘텐츠를 지우지 않음).
>>> import os
>>> if os.path.exists("myfile.dat"):
... f = file("myfile.dat", "r+")
... else:
... f = file("myfile.dat", "w")
r+는 읽기/쓰기를 의미합니다.
python 3.4를 사용해야 합니다.pathlib
파일을 「터치」할 수 있습니다.
이것은 이 스레드에서 제안된 솔루션보다 훨씬 더 우아한 솔루션입니다.
from pathlib import Path
filename = Path('myfile.txt')
filename.touch(exist_ok=True) # will create file, if it exists will do nothing
file = open(filename)
디렉토리도 마찬가지입니다.
filename.mkdir(parents=True, exist_ok=True)
답변:
file_path = 'myfile.dat'
try:
fp = open(file_path)
except IOError:
# If not exists, create the file
fp = open(file_path, 'w+')
용도:
import os
f_loc = r"C:\Users\Russell\Desktop\myfile.dat"
# Create the file if it does not exist
if not os.path.exists(f_loc):
open(f_loc, 'w').close()
# Open the file for appending and reading
with open(f_loc, 'a+') as f:
#Do stuff
주의: 파일을 연 후에는 파일을 닫아야 합니다.또한 컨텍스트 매니저를 사용하면 Python이 이 문제를 해결할 수 있습니다.
open('myfile.dat', 'a')
난 괜찮아
에서 당신의 는 py3k를 .ValueError
:
>>> open('myfile.dat', 'rw')
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
open('myfile.dat', 'rw')
ValueError: must have exactly one of read/write/append mode
에서는 python-2를 일으킨다.6시입니다.IOError
.
Python 3+의 경우 다음을 수행합니다.
import os
os.makedirs('path/to/the/directory', exist_ok=True)
with open('path/to/the/directory/filename', 'w') as f:
f.write(...)
는 '이렇게'입니다.with open
대상 디렉토리가 존재하기 전에 파일을 생성할 수 없습니다., 그 다음에 「이렇게 해 주세요」라고 하는 것입니다.w
이로모드 로분로 【모드로】
파일로 무엇을 하시겠습니까?글만 쓸까요, 아니면 읽고 쓸까요?
'w'
,'a'
는 쓰기를 허용하고 파일이 존재하지 않는 경우 파일을 생성합니다.
파일에서 읽어야 할 경우 파일을 열기 전에 파일이 존재해야 합니다.열기 전에 존재 여부를 테스트하거나 시도/제외를 사용할 수 있습니다.
제가 봤을 때r+
,것은 아니다.rw
저는 단지 시작에 불과합니다.그것은 이 문서에서 확인되고 있는 것입니다.
w+는 파일 쓰기, 있는 경우 잘라내기, r+는 파일 읽기, r+는 파일 읽기, 없는 경우 작성(및 null을 반환), a+는 새 파일 만들기 또는 기존 파일에 추가하기 위해 입력합니다.
읽고 쓰기 위해 열고 싶다면 열 때 잘라내기 싫고 열자마자 파일을 읽을 수 있어야 합니다.제가 사용하고 있는 솔루션은 다음과 같습니다.
file = open('myfile.dat', 'a+')
file.seek(0, 0)
그럼 아직 존재하지 않는 경우에만 파일에 데이터를 쓰시겠습니까?
이 문제는 일반적인 w 모드가 아닌 거의 알려지지 않은x 모드를 사용하여 쉽게 해결할 수 있습니다.예를 들어 다음과 같습니다.
>>> with open('somefile', 'wt') as f:
... f.write('Hello\n')
...
>>> with open('somefile', 'xt') as f:
... f.write('Hello\n')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileExistsError: [Errno 17] File exists: 'somefile'
>>>
파일이 바이너리 모드인 경우 xt 대신 xb 모드를 사용합니다.
import os, platform
os.chdir('c:\\Users\\MS\\Desktop')
try :
file = open("Learn Python.txt","a")
print('this file is exist')
except:
print('this file is not exist')
file.write('\n''Hello Ashok')
fhead = open('Learn Python.txt')
for line in fhead:
words = line.split()
print(words)
언급URL : https://stackoverflow.com/questions/2967194/open-in-python-does-not-create-a-file-if-it-doesnt-exist
'programing' 카테고리의 다른 글
MariaDB의 have_ssl이 DISABLE인 채로 Debian 및 YaSSL에서 SSL을 활성화할 수 없습니다. (0) | 2022.12.25 |
---|---|
프라이머리 키는 MySQL에서 자동으로 인덱싱됩니까? (0) | 2022.12.25 |
서비스 중지/시작 시 MariaDB 메시지 (0) | 2022.12.25 |
MySql 날짜/시간 값이 잘못되었습니다. (0) | 2022.12.25 |
Has-many-through 관계에서 SQL 결과를 필터링하는 방법 (0) | 2022.12.25 |