Aug-19-2021, 05:02 PM
(Aug-19-2021, 02:08 PM)DeaD_EyE Wrote:#!/usr/bin/env python3 from pathlib import Path def sort_by_int(path): # Path has the stem attribute, which is # the filename without the last extension # to sort the paths by integer, you # need to get the integer part of the str # and convert it to an integer # the _ is the character where you can split # maxsplit=1 does only split once, # so you get two elements back # if the _ is missing, split will raise an Exception return int(path.stem.split("_", maxsplit=1)[1]) # Use the high level Path object outputs = Path.home() / "Outputs" # print(outputs) # Path: /home/username/Outputs # use glob for easier search # rglob is to search recursive # glob and rglob replicates the shell-syntax # the wildcard is one * and a ? stands for one character search = "file_*.txt" # sorted takes a key argument, which is used to define how it's sorted # sort_by_int just returns an int and the sorted function # is using this number to sort sorted_outputs = sorted(outputs.glob(search), key=sort_by_int) # the result is a list # sorted consumes the iterable object and returns a list # with the sorted elements # now using this sorted list with Path objects for path in sorted_outputs: # glob does not differe between files, directories or other # elements # so you need to check, if path is a file if path.is_file(): # if it's a file, then open it # the Path onject do have the method open # it supports like the open function a context manager with path.open() as fd: # iterating this file line by line # where the line end is not stripped away for line in fd: # print the line, but tell print not to add an additional # line end, because the line has already a line end print(line, end="") # you can use the stdout to redirect the output # in your shell to a file for example or netcat # or gzip etc...Relevant documentation:
- https://docs.python.org/3/library/pathlib.html
- https://docs.python.org/3/library/functions.html#sorted
- https://docs.python.org/3/library/glob.html (pathlib uses this also)
- https://docs.python.org/3/library/functions.html#print
- https://docs.python.org/3/library/stdtyp...#str.split
Using the program (I named it randomly searchp.py):
I created the
Output:[andre@andre-Fujitsu-i5 ~]$ python3 searchp.py | gzip > output.txt.gz [andre@andre-Fujitsu-i5 ~]$ zcat output.txt.gz 666 123 000Outputs
directory in my home directory and put 3 files in, where each file had only one line with a newline character at the end.
Thanks for your reply. So when I start the script on my windows machine there is no output. Do I need to do some tweaking of your script ?