Python's context managers are a very neat way of handling code that needs a teardown once you are done. Python objects have do have a destructor method ( __del__ ) called right before the last instance of the object is about to be destroyed. You can do a teardown there. However there is a lot of fine print to the __del__ method. A cleaner way of doing tear-downs is through Python's context manager , manifested as the with keyword. class CrushMe: def __init__(self): self.f = open('test.txt', 'w') def foo(self, a, b): self.f.write(str(a - b)) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.f.close() return True with CrushMe() as c: c.foo(2, 3) One thing that is important, and that got me just now, is error handling. I made the mistake of ignoring all those 'junk' arguments ( exc_type, exc_val, exc_tb ). I just skimmed the docs and what popped out is that you need to return True or
Does this affect the data on the volume? I've got a new iMac with dual drives. The second drive is mounted at /Volumes/Macintosh HD 2. This is causing fits with some Unix stuff. Don't like the spaces in the name of the volume. Would like to rename it but don't want to risk losing the 200GB's of data on that drive.
ReplyDeleteHmm, I don't believe it does.
ReplyDeleteAlso, you can achieve the same result via the GUI:
Right click on the volume
Either click 'rename' or click get info and then change the name in the 'name and extension' edit box.
If your Home directory is on the volume where you're changing name, then you can not log in again. You need to tell OS X the new path.
ReplyDeleteOpen System Preferences -> Users & Groups and click the lock in the lower left corner to enable changes.
Then right click (Ctrl+click) on your account and choose Advance Options... To the right of the label that says Home directory, you click on Choose... and select your Home directory (will be located under your new name).
If you fail to do so before rebooting, you have to open OS X in recovery mode (Command+R while booting). There you can open terminal in the menu at the top and rename your volume back to what it was before. Use diskutil rename /Volumes/Volume NewVolName