There are two directories on my desktop, DIR1 and DIR2 which contain the following files:
DIR1:
file1.py
DIR2:
file2.py myfile.txt
The files contain the following:
file1.py
import sys
sys.path.append('.')
sys.path.append('../DIR2')
import file2
file2.py
import sys
sys.path.append( '.' )
sys.path.append( '../DIR2' )
MY_FILE = "myfile.txt"
myfile = open(MY_FILE)
myfile.txt
some text
Now, there are two scenarios. The first works, the second gives an error.
Scenario 1
I cd into DIR2 and run file2.py and it runs no problem.
Scenario 2
I cd into DIR1 and run file1.py and it throws an error:
Traceback (most recent call last):
File "<absolute-path>/DIR1/file1.py", line 6, in <module>
import file2
File "../DIR2/file2.py", line 9, in <module>
myfile = open(MY_FILE)
IOError: [Errno 2] No such file or directory: 'myfile.txt'
However, this makes no sense to me, since I have appended the path to file1.py using the command sys.path.append('../DIR2').
Why does this happen when file1.py, when file2.py is in the same directory as myfile.txt yet it throws an error? Thank you.
sys.pathonly affects how Python looks for modules. If you want toopena file,sys.pathis not involved. Youropenis failing because you're not running the script from the directory that containsmyfile.txt. - larsksDIR2before runningfile2that would explain the behavior you are seeing. If you're doing anything else, show us the exact steps. - larsks