loop through folder in python and open files throws an error
Using os.listdir(...)
only returns the filenames of the directory you passed, but not the full path to the files. You need to include the relative directory path as well when opening the file.
basepath = "pathtodir/DataFiles/"
for filename in os.listdir(basepath):
if filename.endswith(".log"):
print(os.path.join("./DataFiles", filename))
with open(basepath + filename) as openfile:
for line in openfile:
........
os.listdir()
gives you only the filename, but not the path to the file:
import os
for filename in os.listdir('path/to/dir'):
if filename.endswith('.log'):
with open(os.path.join('path/to/dir', filename)) as f:
content = f.read()
Alternatively, you could use the glob
module. The glob.glob()
function allows you to filter files using a pattern:
import os
import glob
for filepath in glob.glob(os.path.join('path/to/dir', '*.log')):
with open(filepath) as f:
content = f.read()