Skip to content

Commit

Permalink
Handle edge cases in csvpy.
Browse files Browse the repository at this point in the history
  • Loading branch information
onyxfish committed Aug 14, 2012
1 parent baf76e8 commit bd5627e
Show file tree
Hide file tree
Showing 12 changed files with 26 additions and 12 deletions.
16 changes: 7 additions & 9 deletions csvkit/cli.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class CSVFileType(object):
An argument factory like argparse.FileType with compression support. An argument factory like argparse.FileType with compression support.
""" """


def __init__(self, mode = "rb"): def __init__(self, mode='rb'):
""" """
Initialize the factory. Initialize the factory.
""" """
Expand All @@ -65,22 +65,20 @@ def __call__(self, path):
""" """
Build a file-like object from the specified path. Build a file-like object from the specified path.
""" """
if path == "-": if path == '-':
if "r" in self._mode: if 'r' in self._mode:
return sys.stdin return sys.stdin
elif "w" in self._mode: elif 'w' in self._mode:
return sys.stdout return sys.stdout
else: else:
raise ValueError("invalid path \"-\" with mode {0}".format(self._mode)) raise ValueError('Invalid path "-" with mode {0}'.format(self._mode))
else: else:
(_, extension) = os.path.splitext(path) (_, extension) = os.path.splitext(path)


if extension == ".gz": if extension == '.gz':
#return gzip.open(path, self._mode)
return LazyFile(gzip.open, path, self._mode) return LazyFile(gzip.open, path, self._mode)
if extension == ".bz2": if extension == '.bz2':
return LazyFile(bz2.BZ2File, path, self._mode) return LazyFile(bz2.BZ2File, path, self._mode)
#return bz2.BZ2File(path, self._mode)
else: else:
return LazyFile(open, path, self._mode) return LazyFile(open, path, self._mode)


Expand Down
1 change: 1 addition & 0 deletions csvkit/utilities/csvclean.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvgrep.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvjoin.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -107,3 +107,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvjson.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvlook.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -50,3 +50,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

12 changes: 9 additions & 3 deletions csvkit/utilities/csvpy.py
Original file line number Original file line Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python


import os import sys


from csvkit import CSVKitReader from csvkit import CSVKitReader
from csvkit.cli import CSVKitUtility from csvkit.cli import CSVKitUtility


class CSVLook(CSVKitUtility): class CSVPy(CSVKitUtility):
description = 'Load a CSV file into a CSVKitReader object and then drops into a Python shell.' description = 'Load a CSV file into a CSVKitReader object and then drops into a Python shell.'
override_flags = 'l' override_flags = 'l'


Expand All @@ -15,6 +15,12 @@ def add_arguments(self):
pass pass


def main(self): def main(self):
if self.args.file == sys.stdin:
raise NotImplementedError('csvpy does not currently support input via pipes. Sorry!')
else:
# Attempt reading filename, will cause lazy loader to access file and raise error if it does not exist
filename = self.args.file.name

reader = CSVKitReader(self.args.file, **self.reader_kwargs) reader = CSVKitReader(self.args.file, **self.reader_kwargs)


try: try:
Expand All @@ -26,7 +32,7 @@ def main(self):
code.interact(self.welcome_message, local={ 'reader': reader }) code.interact(self.welcome_message, local={ 'reader': reader })


def launch_new_instance(): def launch_new_instance():
utility = CSVLook() utility = CSVPy()
utility.main() utility.main()


if __name__ == "__main__": if __name__ == "__main__":
Expand Down
1 change: 1 addition & 0 deletions csvkit/utilities/csvsort.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -49,3 +49,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvsql.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -93,3 +93,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvstack.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -59,3 +59,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/csvstat.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -220,3 +220,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

1 change: 1 addition & 0 deletions csvkit/utilities/in2csv.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -73,3 +73,4 @@ def launch_new_instance():


if __name__ == "__main__": if __name__ == "__main__":
launch_new_instance() launch_new_instance()

0 comments on commit bd5627e

Please sign in to comment.