매번 새 줄의 파일에 문자열 쓰기


259

전화 할 때마다 문자열에 줄 바꿈을 추가하고 싶습니다 file.write(). 파이썬에서 가장 쉬운 방법은 무엇입니까?

답변:


294

"\ n"을 사용하십시오.

file.write("My String\n")

참조 파이썬 설명서를 참조하십시오.


3
변수를 사용하여 레코드를 작성하는 경우 fileLog.write (var1 + var2 + "\ n")과 같이 끝에 + "\ n"을 추가 할 수 있습니다.
Filipe

4
최신 버전의 Python (3.6+)에서는 f-string을 사용할 수도 있습니다.file.write(f"{var1}\n")
halfdan

109

두 가지 방법으로이 작업을 수행 할 수 있습니다.

f.write("text to write\n")

또는 Python 버전 (2 또는 3)에 따라 :

print >>f, "text to write"         # Python 2.x
print("text to write", file=f)     # Python 3.x

f.writelines (str (x))를 사용하여 파일에 쓰기 : 여기서 x는 list입니다. 여기서 x는 새 줄에서 시작하는 각 목록을 처리하는 파일에 x 목록을 작성하는 방법을 알려줍니다.
kaushik

2
@kaushik : f.write ( '\ n'.join (x)) 또는 f.writelines (x에서 i의 경우 i +'\ n ')
Steven

f.write 메소드는 파이썬 2와 3 모두에서 사용할 수 있기 때문에 더 좋습니다.
Dang Manh Truong

78

당신이 사용할 수있는:

file.write(your_string + '\n')

3
예를 들어, 파일에 int를 쓸 때
file.write

@xikhari 왜? file.write(f"my number is: {number}\n")잘 읽고 읽을 수 있습니다.
Guimoute

24

광범위하게 사용한다면 (많은 글을 쓰는 경우) 'file'을 서브 클래 싱 할 수 있습니다.

class cfile(file):
    #subclass file to have a more convienient use of writeline
    def __init__(self, name, mode = 'r'):
        self = file.__init__(self, name, mode)

    def wl(self, string):
        self.writelines(string + '\n')

이제 원하는 기능을 수행하는 추가 기능 wl을 제공합니다.

fid = cfile('filename.txt', 'w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()

어쩌면 다른 줄 바꿈 문자 (\ n, \ r, ...)와 같은 것이 없거나 마지막 줄도 줄 바꿈으로 끝나지 만 나에게 효과적입니다.


1
return None이 경우에는 필요하지 않기 때문에 필요하지 않습니다. 두 번째로, 모든 파이썬 함수는 명령문 None이 없을 때 기본적으로 반환 됩니다 return.
Anna

10

당신은 할 수 있습니다 :

file.write(your_string + '\n')

다른 답변에서 제안한 것처럼 file.write두 번 호출 할 때 왜 문자열 연결 (느린, 오류가 발생하기 쉬운)을 사용 합니까?

file.write(your_string)
file.write("\n")

쓰기는 버퍼링되므로 동일한 내용에 해당합니다.


6
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
    file.write("This will be added to the next line\n")

또는

log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")

4
"w"대신 "a"를 매개 변수로 사용하여 파일을 열면 설명 된 방식으로 작동하도록 쓰기 기능이 변경되지 않습니다. 그 효과는 파일을 덮어 쓰지 않고 빈 파일의 왼쪽 상단에서 시작하는 대신 맨 아래 줄에 텍스트를 추가한다는 것입니다.
democidist

2

참고로 file지원되지 않으며 Python 3제거되었습니다. open내장 기능으로 동일하게 수행 할 수 있습니다 .

f = open('test.txt', 'w')
f.write('test\n')

2

이진 파일에 쓰지 않는 한 print를 사용하십시오. 아래 예제는 CSV 파일 형식에 적합합니다.

def write_row(file_, *columns):
    print(*columns, sep='\t', end='\n', file=file_)

용법:

PHI = 45
with open('file.csv', 'a+') as f:
    write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
    write_row(f)  # newline
    write_row(f, data[0], data[1])

노트:


2

fstring을 사용하여 목록에서 쓰는 또 다른 솔루션

lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
  for line in lines:
    fhandle.write(f'{line}\n')

1

이것은 \ n을 구분 기호로 체계적으로 생성하기 위해이 문제를 스스로 해결하려고 시도한 솔루션입니다. 각 문자열이 파일의 한 줄인 문자열 목록을 사용하여 쓰지만, 당신에게도 효과가있는 것 같습니다. (파이썬 3. +)

#Takes a list of strings and prints it to a file.
def writeFile(file, strList):
    line = 0
    lines = []
    while line < len(strList):
        lines.append(cheekyNew(line) + strList[line])
        line += 1
    file = open(file, "w")
    file.writelines(lines)
    file.close()

#Returns "\n" if the int entered isn't zero, otherwise "".
def cheekyNew(line):
    if line != 0:
        return "\n"
    return ""

왜 간단하지 with open(path, "w") as file: for line in strList: file.write(line + "\n")않습니까? 이렇게하면 모든 목록 작업, 검사를 제거하고 단 3 줄만 가질 수 있습니다.
Guimoute
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.