Skip to main content
 首页 » 编程设计

python之使用 Python 在内存中的文件对象

2025年05月04日10sxdcgaq8080

我不确定如何准确表达这一点,但我有一个脚本可以从 Web 服务器下载 SSL 证书以检查其到期日期。

为此,我需要下载 CA 证书。目前,我将它们写入/tmp 目录中的一个临时文件,稍后再读回,但我确信必须有一种方法可以在不写入磁盘的情况下执行此操作。

这是下载证书的部分

CA_FILE = '/tmp/ca_certs.txt' 
 
root_cert = urllib.urlopen('https://www.cacert.org/certs/root.txt') 
class3_cert = urllib.urlopen('https://www.cacert.org/certs/class3.txt') 
 
temp_file = open(CA_FILE, 'w')     
temp_file.write(root_cert.read()) 
temp_file.write(class3_cert.read()) 
temp_file.close() 

编辑

这里是使用文件获取证书的部分

 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 ssl_sock = ssl.wrap_socket(s, ca_certs=CA_FILE, cert_reqs=ssl.CERT_REQUIRED) 
 ssl_sock.connect(('mail.google.com', 443)) 
 
 date = ssl_sock.getpeercert()['notAfter'] 

请您参考如下方法:

urllib 的响应是一个文件对象。只需在您使用实际文件的任何地方使用它们即可。这是假设使用文件对象的代码当然不需要写入它们。