Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kyan001/pyconsolecmdtools
Console Cmd Tool by Python for console using. Pypi Package.
https://github.com/kyan001/pyconsolecmdtools
Last synced: 3 months ago
JSON representation
Console Cmd Tool by Python for console using. Pypi Package.
- Host: GitHub
- URL: https://github.com/kyan001/pyconsolecmdtools
- Owner: kyan001
- License: mit
- Created: 2020-11-08T07:42:41.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-08-16T18:37:18.000Z (5 months ago)
- Last Synced: 2024-09-16T19:52:18.472Z (4 months ago)
- Language: Python
- Homepage:
- Size: 113 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# PyConsoleCMDTools
![PyPI - Downloads](https://img.shields.io/pypi/dm/consolecmdtools)
![GitHub release](https://img.shields.io/github/v/release/kyan001/PyConsoleCMDTools)
[![GitHub license](https://img.shields.io/github/license/kyan001/PyConsoleCMDTools.svg)](https://github.com/kyan001/PyConsoleCMDTools/blob/master/LICENSE)## Installation
```sh
pip install consolecmdtools # install
pip install --upgrade consolecmdtools # update
python -m consolecmdtools # examples
```## Get Started
```python
import consolecmdtools as cct
print(cct.__version__)
```## Functions
```python
>>> cct.banner("hello, world!") # Generate banner for text
#######################
# hello, world! #
#######################>>> cct.md5("blah blah blah") # Return md5 hash for text.
'55e562bfee2bde4f9e71b8885eb5e303'>>> cct.md5(42) # Return md5 hash for number.
'a1d0c6e83f027327d8461063f4ac58a6'>>> cct.md5('file.txt') # Return md5 hash for file.
'd07aa6ddab4d6d2d2891aa9f3625a5db'>>> cct.md5('file.txt', force_text=True) # Force to return the md5 has for text, even the file exists.
'3d8e577bddb17db339eae0b3d9bcf180'>>> cct.crc32("blah blah blah") # Return crc32 hash for text.
753353432>>> cct.crc32(42) # Return crc32 hash for number.
841265288>>> cct.crc32('file.txt') # Return crc32 hash for file.
1030388931>>> cct.crc32('file.txt', force_text=True) # Force to return the md5 has for text, even the file exists.
3774289445>>> cct.main_color('image.jpg') # Get theme color of image.
(152, 156, 69) # RGB value>>> cct.main_color('http://image-url/image', is_url=True) # Get theme color of web image.
(152, 156, 69) # RGB value>>> cct.main_color('image.jpg', scale=500) # Cost more time to generate a preciser color. default scale is 200.
(152, 156, 69)>>> cct.main_color('image.jpg', triplet='hex') # Return color in hex triplet format. default mode is 'rgb'.
'#989C45'>>> cct.clear_screen() # Clear the console.
>>> cct.get_py_cmd() # Get python running command for different OS.
'python3'>>> cct.run_cmd("echo hello") # Run console command. If the command failed, a warning message echoed. Returns bool.
*
| __RUN COMMAND__________________________
| (Command) echo hello
hello
`>>> cct.read_cmd("echo hello") # Run a command and return the output.
| (_command) echo hello
'hello\n'>>> cct.read_cmd("echo hello", verbose=False) # Run a command and return the output without verbose.
'hello\n'>>> cct.read_cmd("notexist") # If the command failed, a warning message echoed.
| (_command) echo hello
| (Warn) Command Failed:
'Error Messages'>>> cct.resolve_value(42) # If the input is not a dict, return itself.
42>>> cct.resolve_value({"Windows": "win", "Darwin": "macOS", "*": "Linux"}) # Get the value for current platform. `*` is for default.
'Linux'>>> cct.is_cmd_exist("ls") # Test if a command is exist.
True>>> cct.install_package("git") # Install a package.
True>>> cct.install_package(name="ping3", manager="pip3") # Install a package using a different package manager. Options: scoop, choco, brew, port, apt, snap, pip, pip3, pipx.
True>>> cct.install_package({
"Windows": "pypy",
"Darwin": "python",
"Linux": "python3"
}) # Install a package using different package names for different OS.
True>>> cct.install_package({
"Linux": "python3",
"*": "python"
}) # Install a package using different package names for different OS with a default one.
True>>> cct.install_package("git", manager={
"Windows": "choco",
"Darwin": "port",
"Linux": "snap",
"*": "npm"
}) # Install a package using different package managers for different OS with a default one.>>> cct.get_path("./file.txt") # Get the absolute path.
Path('/path/to/file.txt') # Path Object which is a subclass of str.>>> cct.get_path("./file.txt").split('/') # Path Object can be used as str.
['path', 'to', 'file.txt']>>> cct.get_path("./file.txt").path # Get the original path.
'./file.txt'>>> cct.get_path("./file.txt").abs # Get the absolute path. Same as `get_path("./file.txt")` itself.
>>> cct.get_path("./file.txt").exists # Test if the path exists.
True>>> cct.get_path("./file.txt").is_file # Test if the path is a file.
True>>> cct.get_path("./file.txt").is_dir # Test if the path is a dir.
False>>> cct.get_path("/path/to/file.txt").basename # Get the basename of the file or dir.
'file.txt'>>> cct.get_path("/path/to/file.txt").ext # Get the extension of the path. If the path is a dir, return ''.
'txt'>>> cct.get_path("/path/to/file.txt").stem # Get the name of the path without extension. If the path is a dir, return its basename.
'file'>>> cct.get_path("/path/to/file.txt").parent # Get the parent dir path of the file or dir.
'/path/to'>>> cct.get_path("/path/to/file.txt").parent.basename # Get the parent dir path's basename of the file or dir.
'to'>>> cct.select_path() # Show file dialog to get file path. Additional args pass to tkinter.filedialog.askopenfilename()
'/path/to/file'>>> cct.select_path(multiple=True) # Show file dialog to get multiple file paths.
['/path/to/file1', '/path/to/file2']>>> cct.select_path(dir=True) # Show file dialog to get dir path.
'/path/to/dir'>>> cct.bfs_walk("/path/to/root") # Get all paths in the root dir using Breadth-first search.
['/path/to/root', '/path/to/root/folder', '/path/to/root/folder/file1', '/path/to/root/folder/file2']>>> cct.get_paths("/path/to/root", filter=lambda path: path.name.startswith("f")) # Filter paths and return as list[str]
['/path/to/root/folder', '/path/to/root/folder/file1', '/path/to/root/folder/file2']>>> cct.ls_tree(root="/path/to/root") # Show folders and files in a tree.
📂 root\
├──📁 folder\
│ ├──📄 file1
│ ├──📄 file2>>> cct.ls_tree(root="/path/to/root", show_icon=False, ascii=True) # Show without icons, using ASCII chars.
root/
|-- folder/
| |-- file1
| |-- file2>>> cct.ls_tree(root="/path/to/root", to_visible=lambda path: path.is_dir()) # Show only folders.
📂 root\
├──📁 folder\>>> cct.ls_tree(root="/path/to/root", to_highlight=lambda path: path.name == "file1") # Highlight certain file.
📂 root\
├──📁 folder\
│ ├──📄 file1 # highlighted
│ ├──📄 file2>>> cct.ls_tree(root="/path/to/root", add_suffix=lambda path: "(current)" if pathe.name == "file1" else "") # Add suffix to path name.
📂 root\
├──📁 folder\
│ ├──📄 file1 (current)
│ ├──📄 file2>>> cct.show_in_file_manager("/path/to/file") # Show file in Explorer/Finder/File Manager.
>>> cct.show_in_file_manager("/path/to/file", ask=True) # Ask before show.
>>> cct.diff("str1", "str2") # Compare 2 strings, return the list of diffs.
[ # you can use `"\n".join(diff)` to print the diff.
"-str1",
"+str2"
]>>> cct.diff("str1", "str2", meta=True) # show meta data in the first 3 lines.
[
"--- ",
"+++ ",
"@@ -1 +1 @@",
"-str1",
"+str2"
]>>> cct.diff(["a", "b"], ["a", "b", "c"]) # Compare 2 lists and print diffs.
[
"+c"
]>>> cct.diff(["a", "b"], ["a", "b", "c"], context=2) # Show diffs with 2 extra context lines.
[
" a", # context line
" b", # context line
"+c" # diff
]>>> cct.diff("/path/to/file1", "/path/to/file2") # Compare between 2 files.
>>> cct.diff("/path/to/file1", "str") # Compare between file and str/list.
>>> cct.diff('str', 'str') # If no diff, return [].
[]>>> cct.update_file('file', 'http://file-url') # Update file if the file is not as same as url content.
False # if already up-to-date.>>> cct.read_file('file') # Read file using different encoding automatically.
"file content">>> cct.move_file("/path/to/src", "/path/to/dst") # Move file from src to dst, overwrite if dst already exists.
>>> cct.move_file("/path/to/src", "/path/to/dst", copy=True) # Copy file from src to dst.
>>> cct.move_file("/path/to/src", "/path/to/dst", backup=True) # Backup dst file before move or copy.
>>> cct.move_file("/path/to/src", "/path/to/dst", ensure=True) # Ensure the dst dir exists before move or copy.
>>> cct.move_file("/path/to/src", "/path/to/dst", msgout=print) # Use `print` to handle output logs.
>>> cct.copy_file("/path/to/src", "/path/to/dst") # Copy file from src to dst. Same as `move_file(src, dst, copy=True)`.
>>> cct.ajax('http://ajax-url') # Start a AJAX request.
{'result': 'data'} # As python dict.>>> cct.ajax('http://ajax-url', {'data': 'value'}) # AJAX request with param.
{'result': 'data'}>>> cct.ajax('http://ajax-url', method='post') # AJAX request using post. default is 'get'.
{'result': 'data'}>>> if not cct.is_admin(): # Check does the script has admin privileges.
... cct.runas_admin(__file__) # run the script with admin privileges.
... else:
... # your code here
```