This is a really simple question but it's been stumping me for a while. I want to open a file that is in the same directory as the .py script, but I want to specify that directory without using a universal path.

filepath1 = '/Users/username/Documents/Python/TC/TC cedict final.txt'
file = open(filepath1, 'rU')

Also an unrelated question is: If I make a program using wxpython into a .app for Macintosh or .exe for Windows, then does the person running it also have to have python and wxpython installed?

Recommended Answers

All 6 Replies

I'm not sure if I'm reading your question correctly, but if you want to open a file that's in the SAME place as your .py script that opens the file, you don't need to set any form of path name. You just type in the name of the file on it's own, for example:

f = file("test.txt","r")
print f.read()

if you saved that into a folder, as long as the file: "test.txt" is in the same folder then it'd run fine.

As for your second question, i don't really know much about wxpython but as far as i was aware python programs were all interpreted, meaning they cant be made into 'stand-alone' .exe/.app programs, the only work around i know of is py2exe. If you used that then no the user wouldn't need to have python or wxpython installed, the downside to py2exe however is that it bundles all the dependencies together which means you might end up with a very large program folder.

Hope this helps

I understand what you're saying, but that solution does not work. If I use the example as you have written then python looks in "/Users/username" for the file even if the script is not in there. What I'm curious to know is how to specify path relative to the location of the script.

Hmm that's odd.

A single '.' represents the current working path. So you should in theory use that, e.g:

f = file("./SubFolder/test.txt", "r")
f.read()

the above code would open a file called test.txt in the SubFolder, which would be located in the same folder as the 'current working directory' (which SHOULD be where the script is).
So the full path for test.txt could be something like:

"Python/SubFolder/"

But I'm not sure why the previous example didn't work.
Anyway, try using a . in your path, that may work.

hope that helps
alex

P.S
By the way, a single dot (.) means the current folder,
a double dot (..) would go back one folder so you could use "../../" to go back two folders.

EDIT:
One more thing, http://www.bembry.org/technology/python/notes/lesson_12.php
has some pretty good info basic file/folder manipulation.

Somehow my current working directory is set to my home directory by default. I found a solution to this problem though.

__dir__ = os.path.dirname(os.path.abspath(__file__))
filepath = os.path.join(__dir__, 'test.txt')
file = open(filepath, 'rU')

This will get the absolute path to the directory of the *.py file and then I can add the name of my test.txt to it.

ah that explains it, and that's a nice solution too, very useful, thanks :)

i want to open the file of directory it should be onclick open and want to show file content in textarea it should be editable and form post should be through url

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.