Files, directories and imports - relative to the current directoryonly

P

ptn

Hello, group.

I can only read files and import modules that are in the same
directory
as the one my script is. Here is a test script (path.py):

import os
import uno # some module I wrote

print list(os.walk('~/hacking/python'))
f = open('~/read/foo.txt')
print f.read()

And here is the output:

Traceback (most recent call last):
File "path.py", line 2, in <module>
import uno
ImportError: No module named uno

If I comment that import, the output becomes this:

[]
Traceback (most recent call last):
File "path.py", line 4, in <module>
f = open('~/read/foo.txt')
IOError: [Errno 2] No such file or directory: '~/read/foo.txt'

(Notice the empty list at the beginning, that would be the output of
os.walk().)

I have added this line to my .bashrc:
export PYTHONPATH=$PYTHONPATH:~/hacking/python
I thought that by doing so all the scripts found in that directory and
all it's children would be available for import, but that doesn't seem
to be the case. As for the other problems, I have no idea.

So, what's wrong here? Maybe there's something I haven't set up?
 
B

Bjoern Schliessmann

ptn said:
Traceback (most recent call last):
File "path.py", line 4, in <module>
f = open('~/read/foo.txt')
IOError: [Errno 2] No such file or
directory: '~/read/foo.txt'
[...]
So, what's wrong here? Maybe there's something I haven't set up?

Simple: the directory "~" doesn't exist. Since you're not using a
shell (but direct file access) there is no tilde expansion, and "~"
is treated as a regular file name. If you need to get the home
directory refer to the environment variable HOME
(os.environ["HOME"]). There even may be a shorter way, please refer
to the os module docs.

Regards,


Björn
 
G

Gabriel Genellina

En Tue, 25 Mar 2008 15:35:34 -0300, Bjoern Schliessmann
ptn said:
Traceback (most recent call last):
File "path.py", line 4, in <module>
f = open('~/read/foo.txt')
IOError: [Errno 2] No such file or
directory: '~/read/foo.txt'
[...]
So, what's wrong here? Maybe there's something I haven't set up?

Simple: the directory "~" doesn't exist. Since you're not using a
shell (but direct file access) there is no tilde expansion, and "~"
is treated as a regular file name. If you need to get the home
directory refer to the environment variable HOME
(os.environ["HOME"]). There even may be a shorter way, please refer
to the os module docs.

That shorter way being os.path.expanduser
http://docs.python.org/lib/module-os.path.html
 
P

ptrk.mcm

Hello, group.

I can only read files and import modules that are in the same
directory
as the one my script is. Here is a test script (path.py):

import os
import uno # some module I wrote

print list(os.walk('~/hacking/python'))
f = open('~/read/foo.txt')
print f.read()

And here is the output:

Traceback (most recent call last):
File "path.py", line 2, in <module>
import uno
ImportError: No module named uno

If I comment that import, the output becomes this:

[]
Traceback (most recent call last):
File "path.py", line 4, in <module>
f = open('~/read/foo.txt')
IOError: [Errno 2] No such file or directory: '~/read/foo.txt'

(Notice the empty list at the beginning, that would be the output of
os.walk().)

I have added this line to my .bashrc:
export PYTHONPATH=$PYTHONPATH:~/hacking/python
I thought that by doing so all the scripts found in that directory and
all it's children would be available for import, but that doesn't seem
to be the case.

i'm not sure why you are unable to import uno (assuming uno is at ~/
hacking/python/uno.py) after exporting the PYTHONPATH variable. an
alternative way to incorporate uno is to change sys.path, the list of
search paths

import sys
sys.path.append(os.path.expanduser('~/hacking/python'))
import uno
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top