절인 개체를 로드할 수 없습니다.
제가 겪고 있는 문제는 절인 물건을 적재하려고 할 때입니다.두 가지를 모두 사용해 보았습니다.pickle.loads
그리고.pickle.load
결과는 다음과 같습니다.
pickle.loads
:
유형 오류: 'str'이(가) 버퍼 인터페이스를 지원하지 않습니다.
pickle.load
:
TypeError: 파일에 'read' 및 'readline' 특성이 있어야 합니다.
제가 이 과정에서 무엇을 잘못하고 있는지 누가 알려주실 수 있나요?
elif str(parser) == "SwissWithdrawn_Parser":
# swissprot name changes
print("Gathering SwissProt update info...")
cache_hits = 0
cache_misses = 0
files = set()
for f in os.listdir("out/cache/"):
if os.path.isfile("out/cache/" + f):
files.add(f)
for name in sp_lost_names:
cached = False
url = (
"http://www.uniprot.org/uniprot/?query=mnemonic%3a"
+ name
+ "+active%3ayes&format=tab&columns=entry%20name"
)
hashed_url = str(hash(url))
################### For Testing Only - use cache ##################
if hashed_url in files:
cached = True
cache_hits += 1
content = pickle.loads("out/cache/" + hashed_url) # <-- problematic line
else:
cache_misses += 1
content = urllib.request.urlopen(url)
# get the contents returned from the HTTPResponse object
content_list = [x.decode().strip() for x in content.readlines()]
if not cached:
with open("out/cache/" + hashed_url, "wb") as fp:
pickle.dump(content_list, fp)
####################################################################
# no replacement
if len(content_list) is 0:
change_log["swiss-names"] = {name: "withdrawn"}
# get the new name
else:
new_name = content_list[1]
change_log["swiss-names"] = {name: new_name}
먼저 파일을 읽어야 합니다(바이너리로).bytes
) 및 사용pickle.loads()
또는 열려 있는 파일 개체를 에 전달합니다.pickle.load()
지휘권후자가 더 좋습니다.
with open('out/cache/' +hashed_url, 'rb') as pickle_file:
content = pickle.load(pickle_file)
두 방법 모두 파일 이름에서 피클을 로드할 수 없습니다.
python2에서 3으로 포팅하다가 이 오류가 발생하면 python2와 3은 바이트를 다르게 처리하므로 'b' 옵션으로 파일 핸들을 열어야 합니다.예를 들어 python2의 경우open(file, 'r') as f: my_list = pickle.load(f)
작동하지만 python3에서는 작동하지 않습니다.대신에 당신은 시작해야 합니다.open(file, 'rb') as f: my_list = pickle.load(f)
언급URL : https://stackoverflow.com/questions/18261898/cannot-load-pickled-object
'programing' 카테고리의 다른 글
git 디렉터리에 없는 동안 git pull (0) | 2023.05.14 |
---|---|
지난 10일의 날짜가 포함된 기록을 나열하는 방법은 무엇입니까? (0) | 2023.05.14 |
C# 또는 . 최악의 gotchain입니다.NET? (0) | 2023.05.14 |
VB에 매개 변수가 있는 하위 새(생성자)를 상속할 수 있습니까? (0) | 2023.05.14 |
Mongoose(또는 MongoDB)에서 일시적인 트랜잭션 오류란 무엇입니까? (0) | 2023.05.14 |