Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
import requests
class RemoteFile:
Context manager for handling remote OR local files
Can be used like so:
>>> with RemoteFile("/path/to/local/file.txt") as f:
>>> for line in f:
>>> print(line)
Or like this:
>>> with RemoteFile("") as f:
>>> for line in f:
>>> print(line)
def __init__(self, file_path):
Initialize with the file path/URL
file_path: either a URL or a local path
self.file_path = file_path
def __enter__(self):
Open the file and return content
If this is a local file path it will return the file object.
If it is a URL it will return the unicode text of the response.
if self.is_remote:
response = requests.get(self.file_path)
self.contents = response.text
self.contents = open(self.file_path, mode="r")
return self.contents
def __exit__(self, type, value, traceback):
if self.is_local:
def is_remote(self):
return self.file_path.startswith("http")
def is_local(self):
return not self.is_remote
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment