Python Short Demo: Set Operating System-Agnostic Directory Paths for Files using the pathlib Module
Different computer operating systems (OS) use different syntaxes to set filesytem paths: Linux & MacOS use forward slashes, while Windows uses back slashes. This can cause errors when users enter directory paths in Python scripts. An easy way to avoid this problem is to use the pathlib module, which automatically sets filesystem paths using the correct syntax for the user's OS.
Please acknowledge the NOAA/NESDIS/STAR Aerosols and Atmospheric Composition Science Team if using any of this code in your work/research!
# Module to set filesystem paths appropriate for user's operating system from pathlib import Path # Set directory as the current working directory (cwd) cwd_path = Path.cwd() # Set directory using entered directory name directory_name = 'D://Data/Tests/' # Enter directory name as a string directory_path = Path(directory_name)
Demonstration of how to use the module: The user enters the "directory_name" as a string, or sets the current working directory (cwd). In this example, the file paths are on a computer running Windows.
- To set the path for a single file in a directory ("file_path"), the user enters the "file_name" as a string and then combines the directory and file name using "/".
- To set the path to collect multiple files in a directory matching a specified pattern, the user enters a wildcard search string pattern in the "Path(directory_name).glob(pattern)" function, e.g., "Path(directory_name).glob('*.nc')" to collect all files ending with an ".nc" extension.
# Set path for a single file in a directory file_name = 'OR_ABI-L2-FDCM1-M6_G17_s20212291400255_e20212291400312_c20212291400457.nc' # Enter file name file_path = directory_path / file_name
# Print file path for a single file print(file_path)
D:\Data\Tests\OR_ABI-L2-FDCM1-M6_G17_s20212291400255_e20212291400312_c20212291400457.nc
# Set path to collect multiple files in a directory # Use wildcard string to find files, e.g. all .nc files file_list = directory_path.glob('*.nc')
# Print file paths for multiple files collected in a directory for file_path in file_list: print(file_path)
D:\Data\Tests\OR_ABI-L2-FDCM1-M6_G17_s20212291400255_e20212291400312_c20212291400457.nc D:\Data\Tests\OR_ABI-L2-FDCM1-M6_G17_s20212291401255_e20212291401312_c20212291401468.nc D:\Data\Tests\OR_ABI-L2-FDCM1-M6_G17_s20212291402255_e20212291402312_c20212291402474.nc D:\Data\Tests\OR_ABI-L2-FDCM1-M6_G17_s20212291403255_e20212291403312_c20212291403491.nc