- Write string to file
- Read file into string
- Buffered reading
- Process file line by line
- Check file exists
- List files in directory
- Loop over files in directory
- Loop over files in directory, recursively
- Delete file
- Move/rename file
- Copy file
- Add directory to system PATH
All examples assume Python 3, unless otherwise stated
Write string to file
write is just one method of class
File. See all here
# will be overwritten if it already exists! with open("filename.txt","w") as f: f.write("foo bar")
Read file into string
Heads-up: This will break if the file doesn't fit in memory
with open("filename.txt","r") as f: contents = f.read() # use variable `contents`
Process a large text file, but without without loading it all to memory at the same time (buffered reading)
This is easy with python:
with open("path/to/file") as f: for line in f: # process the line
You can also use
f.readline() to read a whole line (dangerous if the file has no line breaks) or
f.read(size), which takes an argument indicating the maximum number of bytes to be read into memory.
Process file line by line
See above: Buffered Reading
Check file exists
This method returns
True if the given path exists and it's a file.
If you just want to test if a path exists (be it a file, directory or even link), use
import os.path path_to_file = "/path/to/file" if os.path.isfile(path_to_file): # it exists, and it is a regular # (i.e. not a directory) file
List files in directory
To show all files that exist in a directory, use
import os os.listdir(path_to_directory) >>> ['file1.txt', 'file2.json', 'myfile.png']
Loop over files in directory
import os root_path = "/path/to/directory" for file in os.listdir(root): # myfile.txt file_name = file # /path/to/directory/myfile.txt full_path_to_file = os.path.join(root,file)
Loop over files in directory, recursively
To loop over all files recursively under some path (i.e. including subdirectories):
import os # you may omit trailing slashes # i.e. '/tmp' works too path = '/tmp/' for root, directories, filenames in os.walk(path): for directory in directories: directory_path = os.path.join(root, directory) # do something with directory_path for filename in filenames: file_path = os.path.join(root,filename) # do something with directory_path
import os # raises FileNotFoundError if file doesn't exist os.remove("/path/to/file")
import os # raises FileNotFoundError if source file doesn't exist os.replace('/path/to/source/file','/path/to/new/location/file')
shutil.copy2(<from>,<to>). Both methods are used the same way. See differences below.
Shutil is part of Python's standard library; there's no need to install anything.
|Method||Copies file data||Copies file permissions||Copies file creation and
Target path can be the full path to the new location
import shutil source_path = '/path/to/source/source-file' target_path = '/path/to/target/target-file' # raises FileNotFoundError if source file doesn't exist # target file is overwritten if it already exists! shutil.copy(source_path,target_path) # >>> '/path/to/target/target-file'
Target path can also be the path to a directory
import shutil source_path = '/path/to/my-file' target_path = '/path/to/another/directory/' # raises FileNotFoundError if source file doesn't exist # target file is overwritten if it already exists! shutil.copy(source_path,target_path) # >>> '/path/to/another/directory/my-file'
Add directory to system PATH
That is, the
PATH environment variable.
import os os.environ["PATH"] += os.pathsep + "/path/to/directory"