파이썬에서 파일을 목록으로 읽는 방법은 무엇입니까?
임의의 숫자를 여러 개 생성하여 파일에 저장할 것인지 사용자에게 묻습니다.그 부분을 저희에게 주셨어요.우리가 해야 할 일은 쉬운 내장 파이썬 도구를 사용하지 않고 그 파일을 열고, 숫자를 목록으로 변환한 다음, 평균, 표준 편차 등을 찾는 것입니다.
사용해 보았습니다.open
하지만 그것은 나에게 잘못된 구문을 제공한다 (내가 선택한 파일 이름은 "숫자"였고 그것은 저장되었습니다."My Documents"
자동적으로, 그래서 저는 노력했습니다.open(numbers, 'r')
그리고.open(C:\name\MyDocuments\numbers, 'r')
둘 다 작동하지 않았습니다.
with open('C:/path/numbers.txt') as f:
lines = f.read().splitlines()
새 줄이 제거된 상태에서 파일에 있는 값(슬롯) 목록이 표시됩니다.
또한 창 경로 이름의 백슬래시도 문자열의 이스케이프 문자이므로 주의하십시오.대신 슬래시를 앞으로 사용하거나 이중 백슬래시를 사용할 수 있습니다.
파이썬에서 파일을 목록으로 읽는 두 가지 방법(둘 다 아님) -
- 의 사용.
with
python 2.5 이상에서 지원됨 - 목록 이해의 사용
의 사용.with
이것이 파일을 열고 읽는 비단결적인 방법입니다.
#Sample 1 - elucidating each step but not memory efficient
lines = []
with open("C:\name\MyDocuments\numbers") as file:
for line in file:
line = line.strip() #or some other preprocessing
lines.append(line) #storing everything in memory!
#Sample 2 - a more pythonic and idiomatic way but still not memory efficient
with open("C:\name\MyDocuments\numbers") as file:
lines = [line.strip() for line in file]
#Sample 3 - a more pythonic way with efficient memory usage. Proper usage of with and file iterators.
with open("C:\name\MyDocuments\numbers") as file:
for line in file:
line = line.strip() #preprocess line
doSomethingWithThisLine(line) #take action on line instead of storing in a list. more memory efficient at the cost of execution speed.
그.strip()
제거할 파일의 각 행에 사용됩니다.\n
각 줄에 포함될 수 있는 새 줄 문자입니다.그 때.with
파일이 자동으로 닫힙니다.그 안에서 예외가 제기되더라도 이는 사실입니다.
목록 이해의 사용
파일 설명자를 즉시 닫지 않을 수 있기 때문에 비효율적인 것으로 간주될 수 있습니다.수천 개의 파일을 여는 함수 내부에서 호출되는 경우 잠재적인 문제일 수 있습니다.
data = [line.strip() for line in open("C:/name/MyDocuments/numbers", 'r')]
파일 닫기는 구현에 따라 다릅니다.일반적으로 사용되지 않는 변수는 python 인터프리터에서 수집한 가비지입니다.cPython(python.org 의 일반 인터프리터 버전)에서는 가비지 수집기가 참조 카운트로 작동하므로 즉시 발생합니다.Jython이나 Iron Python과 같은 다른 인터프리터에서는 지연이 있을 수 있습니다.
f = open("file.txt")
lines = f.readlines()
여기 보세요. readlines()
요소당 하나의 행을 포함하는 목록을 반환합니다.이 선들은 다음을 포함합니다.\n
(새 줄 문자)를 입력합니다.다음을 사용하여 이 새 줄 문자를 제거할 수 있습니다.strip()
. 즉 콜을 호출합니다.lines[index].strip()
새 줄 문자 없이 문자열을 가져오려면.
했듯이, 호킨이언듯이마급, 를 잊지 마세요.f.close()
서류철
로 변환하는 것은 : 스린트를정변환것쉽은습다니는하수로.int("12")
.
파일을 읽고 모든 행을 목록에 넣는 단순한 방법:
from __future__ import with_statement #for python 2.5
with open('C:/path/numbers.txt', 'r') as f:
lines = f.readlines()
그렇다면, 각 선에 숫자가 포함되어 있다고 가정하면,
numbers =[int(e.strip()) for e in lines]
을 다로파이문전달합니야다해로 해야 합니다.open
끈에 문제가 생겼을 때 추가적인 문제가 발생합니다.\
파이썬의 특수 문자열 이스케이프 문자이기 때문입니다.각각을 다음과 같이 두 배로 늘려서 이 문제를 해결할 수 있습니다.\\
또는 a를 넣음으로써.r
다음과됩니다.r'C:\name\MyDocuments\numbers'
.
편집: 질문에 대한 편집으로 인해 원본과 완전히 달라졌고, 원본 포스터에서 나온 것이 없기 때문에 저는 그들이 대여되었는지 확신할 수 없습니다.그러나 간과되었을 수 있는 한 가지 분명한 사실을 지적합니다. 이것이 파일 이름에 "내 문서"를 추가하는 방법입니다.
XP에서는 Windows XP를 사용합니다.My Documents
은 실은사입니다.C:\Documents and Settings\name\My Documents
이것은 다음을 의미합니다.open
통화 내용은 다음과 같아야 합니다.
open(r"C:\Documents and Settings\name\My Documents\numbers", 'r')
라고 부르기 에 XP를 것 .My Documents
Vista와 Windows 7에서 변경되었습니다.파이썬에서 이것을 자동으로 검색하는 쉬운 방법이 있는지 모르겠습니다.
사람들이 말하는 것을 요약하면 다음과 같습니다.
f=open('data.txt', 'w') # will make a new file or erase a file of that name if it is present
f=open('data.txt', 'r') # will open a file as read-only
f=open('data.txt', 'a') # will open a file for appending (appended data goes to the end of the file)
트라이/캐치와 유사한 기능이 필요한 경우
with open('data.txt') as f:
for line in f:
print line
나는 @movieyoda 코드가 아마도 당신이 사용해야 할 것이라고 생각합니다.
hdl = open("C:/name/MyDocuments/numbers", 'r')
milist = hdl.readlines()
hdl.close()
한 줄에 여러 개의 숫자가 있고 여러 줄이 있는 경우 다음과 같이 읽을 수 있습니다.
#!/usr/bin/env python
from os.path import dirname
with open(dirname(__file__) + '/data/path/filename.txt') as input_data:
input_list= [map(int,num.split()) for num in input_data.readlines()]
언급URL : https://stackoverflow.com/questions/3925614/how-do-you-read-a-file-into-a-list-in-python
'IT' 카테고리의 다른 글
Angular 2 이상 변수 업데이트/액세스가 완료될 때까지 구독 대기 (0) | 2023.06.17 |
---|---|
서비스 파일의 디스패치 돌연변이 (0) | 2023.06.17 |
PHPExcel 라이브러리를 대형으로 설치하려면 어떻게 해야 합니까? (0) | 2023.06.17 |
Firebase 인증/권한 없는 도메인입니다.도메인이 인증되지 않았습니다. (0) | 2023.06.17 |
DTO의 기본값을 설정할 수 있습니까? (0) | 2023.06.17 |