diff --git a/scapy/utils.py b/scapy/utils.py
index 675f6647afec8bcb025ff33d3866b41485c00ecd..91e681b580744d26d5f264576d0b0cadc46e979c 100644
--- a/scapy/utils.py
+++ b/scapy/utils.py
@@ -521,15 +521,26 @@ def wrpcap(filename, pkt, *args, **kargs):
 gz: set to 1 to save a gzipped capture
 linktype: force linktype value
 endianness: "<" or ">", force endianness"""
-    with PcapWriter(filename, *args, **kargs) as fdesc:
-        fdesc.write(pkt)
+    ## Does not work with Python <= 2.5. Use this implementation as
+    ## soon as we drop support for Python 2.5.
+    # with PcapWriter(filename, *args, **kargs) as fdesc:
+    #     fdesc.write(pkt)
+    fdesc = PcapWriter(filename, *args, **kargs)
+    fdesc.write(pkt)
+    fdesc.close()
 
 @conf.commands.register
 def rdpcap(filename, count=-1):
     """Read a pcap file and return a packet list
 count: read only <count> packets"""
-    with PcapReader(filename) as fdesc:
-        return fdesc.read_all(count=count)
+    ## Does not work with Python <= 2.5. Use this implementation as
+    ## soon as we drop support for Python 2.5.
+    # with PcapReader(filename) as fdesc:
+    #     return fdesc.read_all(count=count)
+    fdesc = PcapReader(filename)
+    result = fdesc.read_all(count=count)
+    fdesc.close()
+    return result