Cannot load pickled object
Date : March 29 2020, 07:55 AM
around this issue You need to either read the file first (as binary bytes) and use pickle.loads(), or pass an open file object to the pickle.load() command. The latter is preferable: with open('out/cache/' +hashed_url, 'rb') as pickle_file:
content = pickle.load(pickle_file)
|
python cookiejar: CookieJar instance has no attribute 'load'
Tag : python , By : John Phipps
Date : March 29 2020, 07:55 AM
it should still fix some issue load() is a method on the FileCookieJar() class only, a subclass of CookieJar(). Looks like you got confused between the two somewhere. import cookielib
cj = cookielib.FileCookieJar()
cj.load('cookies.txt')
|
Struggling to retrieve csrf token from a cookiejar object
Tag : python , By : Julian Ivanov
Date : March 29 2020, 07:55 AM
it fixes the issue I am using the code below based on this answer to store authentication cookies in a file. This allows me to avoid having to log in every time I run the program. , I finally figured it out. Not sure if it can be further simplified. import os, requests
from cookielib import LWPCookieJar
def login():
global s
s = requests.Session()
if os.path.exists('cookiejar'):
print('Cookies exist! Fast login.\r'),
global csrf
with open('cookiejar') as f:
s.cookies = requests.utils.cookiejar_from_dict(pickle.load(f))
csrf = s.cookies['csrftoken']
print('csrf: {0}').format(csrf) # Debug information
else:
print('Cookies do not exist. Slow login.\r'),
s.get('http://www.example.com/') # to get csrf
csrf = s.cookies['csrftoken']
data= dict(csrftoken=csrf, username="user", password="pass")
s.post('https://www.example.com/login/', data=data, headers=headers)
with open('cookiejar', 'w') as f:
pickle.dump(requests.utils.dict_from_cookiejar(s.cookies), f)
|
Create object that cannot be pickled
Tag : python , By : user179863
Date : March 29 2020, 07:55 AM
it fixes the issue If all you need is an object that will throw an exception when you pickle it, for the puposes of testing, you can blow up the __getstate__ method. >>> class C:
... def __getstate__(self):
... raise Exception
...
>>> pickle.dumps(C())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1374, in dumps
Pickler(file, protocol).dump(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 224, in dump
self.save(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 286, in save
f(self, obj) # Call unbound method with explicit self
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 723, in save_inst
stuff = getstate()
File "<stdin>", line 3, in __getstate__
Exception
>>> with open('spam.txt', 'w') as f:
... pickle.dumps(f)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1374, in dumps
Pickler(file, protocol).dump(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 224, in dump
self.save(obj)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 306, in save
rv = reduce(self.proto)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy_reg.py", line 70, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle file objects
|
Cannot unpickle pickled object
Tag : python , By : user167963
Date : March 29 2020, 07:55 AM
With these it helps Classes that take extra arguments to __new__ need to provide a __getnewargs__ method to tell pickle what the extra arguments are. You can monkey-patch SSLProtocol to add a __getnewargs__ method: ssl.SSLContext.__getnewargs__ = lambda self: (self.protocol,)
|