Files, directories and imports - relative to the current directoryonly

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • ptn

    #1

    Files, directories and imports - relative to the current directoryonly

    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=$PYT HONPATH:~/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?
  • Bjoern Schliessmann

    #2
    Re: Files, directories and imports - relative to the current directory only

    ptn wrote:
    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

    --
    BOFH excuse #139:

    UBNC (user brain not connected)

    Comment

    • Gabriel Genellina

      #3
      Re: Files,directori es and imports - relative to the current directory only

      En Tue, 25 Mar 2008 15:35:34 -0300, Bjoern Schliessmann
      <usenet-mail-0306.20.chr0n0s s@spamgourmet.c omescribió:
      ptn wrote:
      > 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.expandu ser
      Source code: Lib/genericpath.py, Lib/posixpath.py(for POSIX) and Lib/ntpath.py(for Windows). This module implements some useful functions on pathnames. To read or write files see open(), and for ac...


      --
      Gabriel Genellina

      Comment

      Working...