- Make sure the file exists: use
os.listdir()
to see the list of files in the current working directory - Make sure you’re in the directory you think you’re in with
os.getcwd()
(if you launch your code from an IDE, you may well be in a different directory) - You can then either:
- Call
os.chdir(dir)
,dir
being the folder where the file is
located, then open the file with just its name like you were doing. - Specify an absolute path to the file in your
open
call.
- Call
- Remember to use a raw string if your path uses backslashes, like
so:dir = r'C:\Python32'
- If you don’t use raw-string, you have to escape every backslash:
'C:\\User\\Bob\\...'
- Forward-slashes also work on Windows
'C:/Python32'
and do not need to be escaped.
- If you don’t use raw-string, you have to escape every backslash:
Let me clarify how Python finds files:
- An absolute path is a path that starts with your computer’s root directory, for example
C:\Python\scripts
if you’re on Windows. - A relative path is a path that does not start with your computer’s root directory, and is instead relative to something called the working directory. You can view Python’s current working directory by calling
os.getcwd()
.
If you try to do open('sortedLists.yaml')
, Python will see that you are passing it a relative path, so it will search for the file inside the current working directory.
Calling os.chdir()
will change the current working directory.
Example: Let’s say file.txt
is found in C:\Folder
.
To open it, you can do:
os.chdir(r'C:\Folder')
open('file.txt') # relative path, looks inside the current working directory
or
open(r'C:\Folder\file.txt') # absolute path