The following code returns a list of file-names in a given directory:
def get_files(dir_path_str):
onlyfiles = next(os.walk(dir_path_str))[2]
return onlyfiles
How can I make it return absolute file paths with minimal modification and preserve the behavior of the function?
The easiest way to do this is with pathlib
Make your input directory a Path object, use .iterdir() to get all the files/folders inside that directory, use .absolute() to make them absolute and .is_file() to check that they're files:
from pathlib import Path
def get_files(inp_path_str):
directory = Path(inp_path_str)
only_files = [file.absolute() for file in directory.iterdir() if file.is_file()]
return only_files
If you want the paths to be strings rather than Path objects, pathlib Paths can have str() called on them:
only_files = [str(file.absolute()) for file in directory.iterdir() if file.is_file()]
Or as a fully expanded loop rather than a list comprehension:
def get_files(inp_path_str):
directory = Path(inp_path_str)
only_files = []
for file in directory.iterdir():
if file.is_file():
only_files.append(str(file.absolute()))
return only_files