def main(): fh = open('lines.txt') for line in fh.readlines(): print(line) if __name__ == "__main__": main() Directory files
I am on for-working.py file, and am trying to access the lines.txt file within the same working directory. But I get error
No such file or directory: 'lines.txt'
Does python need to have an absolute path when opening files?
why doesn't this relative path work here?
Running python 3.6
EDIT ^1 I'm running visualstudio code with the python package extension by Don Jayamanne, and "Code Runner" package to compile/execute python code
EDIT ^2 Full error:
Traceback (most recent call last): File "c:\www\Ex_Files_Python_3_EssT(1)\Ex_Files_Python_3_EssT\Exercise Files\07 Loops\for-working.py", line 11, in <module> if __name__ == "__main__": main() File "c:\www\Ex_Files_Python_3_EssT(1)\Ex_Files_Python_3_EssT\Exercise Files\07 Loops\for-working.py", line 7, in main fh = open('lines.txt', 'r') FileNotFoundError: [Errno 2] No such file or directory: 'lines.txt' EDIT ^3 checking sys.path
import sys print(sys.path) produces this information:
['c:\\www\\Ex_Files_Python_3_EssT(1)\\Ex_Files_Python_3_EssT\\Exercise Files\\07 Loops', 'C:\\Users\\Kagerjay\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\Kagerjay\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\Kagerjay\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\Kagerjay\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\Kagerjay\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages'] EDIT ^4 checking os.getcwd()
Running
import os print(os.getcwd()) Produces
c:\www\Ex_Files_Python_3_EssT(1)\Ex_Files_Python_3_EssT\Exercise Files Well its definitely not in the right subdirectory (needs to cd 07 loops folder, that narrows the issue down
EDIT ^5 what is in lines.txt file
My lines.txt file i am opening looks like this. No extra whitespace or anything at start
01 This is a line of text 02 This is a line of text 03 This is a line of text 04 This is a line of text 05 This is a line of text IN SUMMARY
Visual studio code's Code runner extension needs to be tweaked slightly to open files within a subdirectory so any of the below answers would provide a more robust solution to be independent of any extension / dependencies with the IDE
import os print(os.getcwd()) Is most useful for diagnosing problem to the current directory python interpreter sees

fh = open(os.path.join(os.getcwd(), 'lines.txt'))'r'is the default argument and can be omitted.import sys; print (sys.path)sys.pathwhat is relevant in this case, butos.getcwd(). Check the output ofimport os; print(os.getcwd()). If it is not the full path to the folder "07 Loops" then the Python interpreter is running from a different directory. Also, this is silly but sometimes happens, make sure the file "lines.txt" doesn't have any extra whitespace at the beginning or end of its name or something like that.