Skip to content
Zakir Syed edited this page Jan 30, 2019 · 10 revisions

Python-numpy-pandas How tos/ quick and dirty tricks


File IO


Create a folder in CWD(Current working directory)

import sys, os
my_dir = os.path.join(os.getcwd(), 'temp')
if not os.path.isdir(my_dir):
    os.makedirs(my_dir)

Get all files in a dir with a pattern in filename

import glob
my_files = glob.glob(my_dir+ '/' +"log_*.txt")

Rename all files in current directory replacing all ' ' and '-' by '_'

for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))):
after = filename
after = after.replace(" ", "_"); after = after.replace("-", "_");
print(f"Before: {filename} After: {after}")
    os.rename(filename, after)

Sort filenames in natural order

Say files = [log_1.txt, log_54.txt, log_2.txt, log_5.txt log_11.txt, log_12.txt] Python's In-built sort is lexicographical order i.e dictionary order
sorted(flies) [log_1.txt, log_11.txt, log_12.txt, log_2.txt, log_5.txt, log_55.txt ] To achieve natural order i.e [log_1.txt, log_2.txt, log_5.txt, log_11.txt, log_12.txt, log_55.txt] Extract the number from the file name and sort by it. Solution using lambda:- pdf_files.sort(key=lambda x: int(x[x.find('_')+1 : x.find('.')])) C++ example see this natural_order_sort.cpp

Clone this wiki locally