writelines()`는 줄 바꿈 문자를 삽입하지 않으므로 파일에 목록을 작성하는 가장 깔끔한 방법인가요?
file.writelines(["%s\n" % item for item in list])
표준적인 방법이 있을 것 같은데...
루프를 사용할 수 있습니다:
with open('your_file.txt', 'w') as f:
for item in my_list:
f.write("%s\n" % item)
파이썬 2에서는 다음을 사용할 수도 있습니다.
with open('your_file.txt', 'w') as f:
for item in my_list:
print >> f, item
단일 함수 호출에 관심이 있다면 적어도 대괄호 []
를 제거하여 인쇄할 문자열이 한 번에 하나씩 만들어지도록 하면 전체 문자열 목록을 구현하는 데 필요한 모든 메모리를 차지할 이유가 없습니다(리스트컴프가 아닌 제네엑스).
파일로 무엇을 하려고 하나요? 이 파일이 사람이나 명확한 상호 운용성 요구 사항이 있는 다른 프로그램을 위해 존재하나요?
나중에 동일한 파이썬 앱에서 사용할 수 있도록 목록을 디스크에 직렬화하려는 경우 목록을 피클해야 합니다.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
다시 읽으려면:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
with open(filepath, 'w') as file_handler:
for item in the_list:
file_handler.write("{}\n".format(item))
이것은 독립적인. 또한, 이는 종료되는 마지막 행은 개행 문자를 통해 [bsbab-unix 모범 사례] (https://stackoverflow.com/questions/729692/why-should-text-files-end-with-a-newline).
생각해봤죠 사용하는 것이 재미있는 장점을 경험하십시오 진스프 도왔으매 here& # 39 의 내 시행하십시오.
(질문) 의 예를 대괄호의 임시 목록, 그래서 만드는 데 사용하는 것과 같습니다.
file.writelines( list( "%s\n" % item for item in list ) )
구성되어 있는 모든 것을 줄 수 있는 임시 목록니다 기록되었으므로 아웃해야 상당한 양의 메모리를 사용할 수도 있으므로, 얼마나 크기에 따라 세부 목록을 str (item) 의 출력을 '' 입니다.
드롭합니다 대괄호의 (랩할 분리 목록 () '와' 호츨 위) 를 전달하는 대신 임시 발생기입니다 'file.라이틀린스 ()'.
file.writelines( "%s\n" % item for item in list )
이 발생기입니다 조성해 줄 바꿈 종료되었습니다. 나타내줍니다 '항목' 객체에는 온디맨드 (즉, 이들은 기록되었으므로 아웃하려면). 대한 몇 가지 좋다.
메모리 오버헤드 대해서도 매우 큰 열거합니다 작다.
Str (item) '느림' 의 경우 파일의 각 항목은 처리됩니까 가시적입니다 진행률에 there& # 39 로
이렇게 하면, 다음과 같은 메모리 문제
In [1]: import os
In [2]: f = file(os.devnull, "w")
In [3]: %timeit f.writelines( "%s\n" % item for item in xrange(2**20) )
1 loops, best of 3: 385 ms per loop
In [4]: %timeit f.writelines( ["%s\n" % item for item in xrange(2**20)] )
ERROR: Internal Python error in the inspect module.
Below is the traceback from this internal error.
Traceback (most recent call last):
...
MemoryError
(난 트리거됨 이 오류는 제한 Python& # 39 을 (를) '의 가상 메모리와 100mb 까지 맥스트 ulimit - v 102400').
실제로, 이 방법은 모든 메모리 사용량 isn& # 39 한 쪽에 두고, t 보다 빠른 원래:
In [4]: %timeit f.writelines( "%s\n" % item for item in xrange(2**20) )
1 loops, best of 3: 370 ms per loop
In [5]: %timeit f.writelines( ["%s\n" % item for item in xrange(2**20)] )
1 loops, best of 3: 360 ms per loop
(파이썬 2.6.2 Linux)
다음은 구문은 라이틀린스 방법 ()
fileObject.writelines( sequence )
#!/usr/bin/python
# Open a file
fo = open("foo.txt", "rw+")
seq = ["This is 6th line\n", "This is 7th line"]
# Write sequence of lines at the end of the file.
line = fo.writelines( seq )
# Close opend file
fo.close()
우선 이 논리를 변환하십시오 항목을 목록을 '문자열 (str)'. 때론 이 목록에 포함된 같은 튜플
alist = [(i12,tiger),
(113,lion)]
이 논리는 각 파일에 쓸 것이라고 새 할말이다 튜플 나중에 사용할 수 있습니다 '평가' 각 튜플 로드하는 동안 읽을 때 파일:
outfile = open('outfile.txt', 'w') # open a file in write mode
for item in list_to_persistence: # iterate over the list items
outfile.write(str(item) + '\n') # write to the file
outfile.close() # close the file
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
f = open('poem.txt', 'w') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
How It Works. 첫째, 내장 기능 및 specifying 이름을 사용하여 파일을 열고 오픈 우리가 원하는 파일을 열 수 있는 파일 및 모드. 이 모드는 될 수 있습니다. 읽기 모드 ("r"), 쓰기 모드 ("w") 또는 덮어쓰기/추가 모드 ('a'). 또한 대체하십시오 우리는 표시할지를 텍스트 모드에서 읽기, 쓰기, 또는 추가 또는 이진 (지기위해선 ') 모드 ('b'). 실제로 여러 가지 모드를 사용할 수 있습니다 (개방) 및 도움말 이들에 대한 자세한 사항은 부여하느뇨. 기본적으로 것으로 파일을 open () 안 될 '연장' r '에서 엽니다 파일이므로 읽기 모드. 이 예에서는 쓰기 (write) 를 사용하여 파일의 첫 오픈 텍스트 모드 그리고 우리가 마지막으로 파일을 파일 객체에는 방법을 쓸 닫으십시오 절실해졌습니다.