Ruby에서는 s = File.read(filename)
. 내가 파이썬에서 아는 가장 짧고 명확한 것은
with open(filename) as f:
s = f.read()
더 짧고 (바람직하게는 한 줄) 더 읽기 쉽게 만드는 다른 방법이 있습니까?
참고 : 처음에는 질문을 “한 줄의 코드로 수행”이라고 표현했습니다. S.Lott가 지적했듯이, 짧다고해서 더 가독성이 좋은 것은 아닙니다. 그래서 나는 단지 내가 의미하는 바를 명확히하기 위해 내 질문을 다시 표현했습니다. 나는 Ruby 코드가 한 줄 대 두 줄이기 때문에 반드시 더 낫고 더 읽기 쉽다고 생각합니다 (그것도 중요하지만), 또한 누가 파일을 닫는 지에 대한 질문을 제기하지 않는 인스턴스 메서드와는 반대로 클래스 메서드이기 때문에, 아래 답변에서 지적했듯이 GC를 사용하여 파일을 닫을 수 있지만 (따라서 한 줄로 만드는) 코드가 더 나빠집니다. 더 짧지 만. 휴대가 불가능할뿐만 아니라 명확하지 않게 만드는 것입니다.
답변
라이브러리 사용에 개방적이라면 forked-path (easy_install 또는 pip 사용)를 설치해보십시오 .
그런 다음 다음을 수행 할 수 있습니다.
from path import path
s = path(filename).bytes()
이 라이브러리는 상당히 새롭지 만 수년 동안 Python 주위에 떠다니며 꽤 많이 사용 된 라이브러리의 포크입니다. 나는이 라이브러리 년 전 발견 이후, 나는 매우 드물게 사용하지 os.path
또는 open()
더 이상.
답변
with open('x.py') as f: s = f.read()
*** 웃음 ***
답변
위와 동일하지만 오류를 처리하지 않습니다.
s = open(filename, 'r').read()
답변
답변
contents = open(filename).read()
답변
이것은 Perl이 아닙니다. 여러 줄의 코드를 한 줄에 강제로 맞추고 싶지는 않습니다. 함수를 작성한 다음 함수를 호출하면 한 줄의 코드가 필요합니다.
def read_file(fn):
"""
>>> import os
>>> fn = "/tmp/testfile.%i" % os.getpid()
>>> open(fn, "w+").write("testing")
>>> read_file(fn)
'testing'
>>> os.unlink(fn)
>>> read_file("/nonexistant")
Traceback (most recent call last):
...
IOError: [Errno 2] No such file or directory: '/nonexistant'
"""
with open(fn) as f:
return f.read()
if __name__ == "__main__":
import doctest
doctest.testmod()
답변
느리고 추하고 플랫폼에 따라 …하지만 한 줄짜리 😉
import subprocess
contents = subprocess.Popen('cat %s' % filename, shell = True, stdout = subprocess.PIPE).communicate()[0]