-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Zakir Syed edited this page Jan 30, 2019
·
10 revisions
import sys, os
my_dir = os.path.join(os.getcwd(), 'temp')
if not os.path.isdir(my_dir):
os.makedirs(my_dir)
import glob
my_files = glob.glob(my_dir+ '/' +"log_*.txt")
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)
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