모듈 할당을 위해 소프트웨어 도매 업체를위한 "재고 관리"시스템을 만들어야합니다. 프로그램을 만들었지 만 영구적으로 저장하는 데 문제가 있습니다. 프로그램은 다음과 같은 중첩 된 목록으로 구성됩니다.
[["Ms Office", "CD", 7, "Microsoft"], ["Acrobat Reader", "DVD", 12, "Adobe"], ["Norton Antivirus", "DVD", 24, "Symantec"]]
형식으로 텍스트 문서에 저장할 수 있습니다.
['Ms Office', 'CD', 7, 'Microsoft']
['Acrobat Reader', 'DVD', 12, 'Adobe']
['Norton Antivirus', 'DVD', 24, 'Symantec']
그러나 동일한 형식의 목록으로 다시로드하려고하면 다음과 같이 각 항목을 구분하는 따옴표로 끝납니다.
["['Ms Office', 'CD', 7, 'Microsoft']", "['Acrobat Reader', 'DVD', 12, 'Adobe']", "['Norton Antivirus', 'DVD', 24, 'Symantec']"]
이제 목록의 각 항목을 둘러싼 큰 따옴표를 제거하면됩니다. 이 파일을로드하는 데 사용하는 코드 :
filename = open('Appexstock.txt', 'r')
contents = filename.read()
thelist = [name for name in contents.split('\n') if name.split('"') if name]
filename.close()
온라인에서 몇 시간 동안 검색하고 모든 것을 시도했지만 여전히 작동하도록하는 방법을 찾을 수 없습니다. 많은 사람들이 CSV 모듈을 제안하는 것을 보았지만 코드에 적용하는 방법을 모르겠습니다.
사용 ast.literal_eval
:
>>> from ast import literal_eval
with open('Appexstock.txt') as f:
lis = [literal_eval(line) for line in f]
...
>>> lis
[['Ms Office', 'CD', 7, 'Microsoft'], ['Acrobat Reader', 'DVD', 12, 'Adobe'], ['Norton Antivirus', 'DVD', 24, 'Symantec']]
파이썬 객체를 저장하려면 pickle 모듈 을 사용하는 것이 좋습니다 .
>>> import pickle
>>> data = [["Ms Office", "CD", 7, "Microsoft"], ["Acrobat Reader", "DVD", 12, "Adobe"], ["Norton Antivirus", "DVD", 24, "Symantec"]]
with open('my_data', 'w') as f:
pickle.dump(data, f)
...
with open('my_data') as f:
print pickle.load(f)
...
[['Ms Office', 'CD', 7, 'Microsoft'], ['Acrobat Reader', 'DVD', 12, 'Adobe'], ['Norton Antivirus', 'DVD', 24, 'Symantec']]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다