On 12/19/2010 01:16 PM, Steven D'Aprano wrote:
Lang Hurst wrote:
I have the following in my program:


        try:
            os.startfile('current_credit.txt')
        except:
            os.system('/usr/bin/xdg-open current_credit.txt')


Basically, open a file in notepad if I'm on windows, vim if on my home linux computer. It works fine in linux and in Windows through virtualbox. The problem is when I take the program to work, it doesn't open the file. The computers at work are pretty locked down, so I'm thinking it has something to do with the os.startfile command. Are there any alternative commands I could try?

You don't give us much information to go on, such as the version of Python you use, or the operating system on your work desktops, or the error that you see when you try this, or even if you can open the file by double-clicking it, but that's okay, because I love guessing games!

I guess that the problem is that your work desktops are, in fact, Apple Macintoshes running OS-X. Am I close?

Other than that, you shouldn't just blindly ignore the exception raised by startfile. Not all exceptions mean "You're not running Windows and there is no startfile command", and you shouldn't catch bare excepts. You would be better off doing this:

try:
    os.startfile('current_credit.txt')
except AttributeError:
    # No startfile command, so we're not on Windows.
    # Try a Linux command instead.
    # (Tested on Fedora, may not work on all distros.)
    os.system('/usr/bin/xdg-open current_credit.txt')


That way, when you get a different error, like "file not found" or "permission denied", you will see what it is, and perhaps get a hint as to what the problem is.

Python doesn't have super powers. If you can't open a file because the desktop has been locked down, then Python won't be able to magically open it. It has no more permissions to do things than you do. There's no magic command "open files even if I'm not allowed to open them".



Sorry for the lack of information. I'm using Python 2.6.6, glade, gtk, vim. Once the program does what I want, I boot up the virtualbox image (XP) and try it in there. Usually it doesn't have a problem. If all works well, I wrap it all up into an executable using pyinstaller. Then I try to run the exe on XP. That works, so I pull it back into linux (Debian Sid, for what that's worth) and run the executable via wine. Everything checks out.

I can't install anything at work (XP computer), hence the stand alone file. Then when I run it, everything works fine, except when I get to the point where I want notepad to open the file. I can browse to the file and manually open it with notepad and it's fine. It just won't open with notepad from the script.

I just don't really know Windows that well. I was just wondering if my work computer being locked down like it is would stop the os.startfile command, and if so, do I have any alternative ways to do what I'm trying to do (open a text file).

--
There are no stupid questions, just stupid people.

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to