Python 写入NamedTemporaryFile失败;将Curl cookie jar转换为请求cookie
我正在尝试获取Curl吐出的netscapehttpcookie文件,并将其转换为请求库可以使用的Cookiejar。我的Python脚本中有Python 写入NamedTemporaryFile失败;将Curl cookie jar转换为请求cookie,python,curl,temporary-files,cookiejar,cookielib,Python,Curl,Temporary Files,Cookiejar,Cookielib,我正在尝试获取Curl吐出的netscapehttpcookie文件,并将其转换为请求库可以使用的Cookiejar。我的Python脚本中有netscapeCookieString作为变量,它看起来像: # Netscape HTTP Cookie File # https://curl.haxx.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .miami.edu
netscapeCookieString
作为变量,它看起来像:
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
.miami.edu TRUE / TRUE 0 PS_LASTSITE https://canelink.miami.edu/psc/PUMI2J/
因为我不想自己解析cookie文件,所以我想使用cookielib
。不幸的是,这意味着我必须写入磁盘,因为cookielib.MozillaCookieJar()
不会接受字符串作为输入:它必须接受一个文件
因此,我正在使用NamedTemporaryFile
(无法使SpooledTemporaryFile
正常工作;如果可能的话,我希望在内存中执行所有这些操作)
但这是踢球的人,这不管用
print tempCookieFile.read()
打印空行
因此,pprint.pprint(cookieJar)
打印一个空的cookie jar
我可以很容易地在我的Mac上复制这个:
>>> import tempfile
>>> tempCookieFile = tempfile.NamedTemporaryFile()
>>> tempCookieFile.write("hey")
>>> tempCookieFile.flush()
>>> print tempCookieFile.read()
>>>
我如何才能真正写入一个
名为temporaryfile
?写入文件后,指向该文件的指针指向写入数据之后的位置(在您的情况下是文件结尾),因此,当您读取时,它返回一个空字符串(文件结尾后不再有数据),只需在读取之前查找0即可
>>> import tempfile
>>> tempCookieFile = tempfile.NamedTemporaryFile()
>>> tempCookieFile.write("hey")
>>> tempCookieFile.seek(0)
>>> print(tempCookieFile.read())
漂亮,谢谢!我立刻想到了cookie加载不起作用的原因:必须在写入的每一行之后添加一个换行符。
>>> import tempfile
>>> tempCookieFile = tempfile.NamedTemporaryFile()
>>> tempCookieFile.write("hey")
>>> tempCookieFile.seek(0)
>>> print(tempCookieFile.read())