Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
other:python:misc_by_jyp [2021/07/15 15:29] – [Working with paths and filenames] Added shutil and and example jypeter | other:python:misc_by_jyp [2021/08/25 14:00] – [Working with paths and filenames] Added more examples jypeter |
---|
| |
<WRAP center round tip 60%> | <WRAP center round tip 60%> |
You will find on this page some useful, but unsorted, python tips and tricks that can't fit in a section of the main [[other:python:jyp_steps|JYP's recommended steps for learning python]] page | You will find on this page some **useful, but unsorted, python tips and tricks** that can't fit in a section of the main [[other:python:jyp_steps|JYP's recommended steps for learning python]] page |
</WRAP> | </WRAP> |
| |
* [[https://docs.python.org/3/library/pathlib.html#correspondence-to-tools-in-the-os-module|Matching pathlib, and os or os.path functions]] | * [[https://docs.python.org/3/library/pathlib.html#correspondence-to-tools-in-the-os-module|Matching pathlib, and os or os.path functions]] |
* [[https://docs.python.org/3/library/shutil.html|High-level file operations]] | * [[https://docs.python.org/3/library/shutil.html|High-level file operations]] |
| |
| |
| === Example: getting the full path of the Python used === |
| |
| <code>>>> import shutil |
| >>> my_python = shutil.which('python') |
| >>> my_python |
| '/home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm_py3/bin/python'</code> |
| |
| |
| === Example: getting the full path of a script === |
| |
| <code>>>> import os |
| >>> os.getcwd() |
| '/home/jypmce/PMIP4' |
| >>> os.path.exists('./argv_test.py') |
| True |
| >>> os.path.abspath('./argv_test.py') |
| '/home/jypmce/PMIP4/argv_test.py' |
| >>> os.path.exists('/home/jypmce/PMIP4/argv_test.py') |
| True |
| </code> |
| |
| |
=== Example: getting the size(s) of all the files in a directory === | === Example: getting the size(s) of all the files in a directory === |
| |
[[https://docs.python.org/3/library/argparse.html|argparse]] (//parser for command-line options, arguments and sub-commands//) is available since Python version 3.2 | [[https://docs.python.org/3/library/argparse.html|argparse]] (//parser for command-line options, arguments and sub-commands//) is available since Python version 3.2 |
| |
| ==== Using ordered dictionaries ==== |
| |
| **Dictionary order is guaranteed to be insertion order**! Note that the [[https://docs.python.org/3/library/stdtypes.html#dict|usual Python dictionary]] also guarantees the order since version **3.6** |
| |
| Check the [[https://docs.python.org/3/library/collections.html#collections.OrderedDict|OrderedDict class]] (''from collections import OrderedDict'') and the [[https://realpython.com/python-ordereddict/|OrderedDict vs dict in Python: The Right Tool for the Job]] tutorial |
| |
| ==== Printing a readable version of long lists or dictionaries ==== |
| |
| The [[https://docs.python.org/3/library/pprint.html|pprint]] module can be used for //pretty printing// objects (lists, dictionaries, ...). It will wrap long lines in a meaningful way |
| |
| <code>>>> from collections import OrderedDict |
| |
| >>> test_dic = OrderedDict([('AWI-ESM-1-1-LR_AWI', {'r1i1p1f1': {'grid': 'gn'}}), ('CESM2_NCAR', {'r1i1p1f1': {'grid': 'gn'}}), ('IPSL-CM6A-LR_IPSL', {'r1i1p1f1': {'grid': 'gr'}, 'r1i1p1f2': {'grid': 'gr'}, 'r1i1p1f3': {'grid': 'gr'}, 'r1i1p1f4': {'grid': 'gr'}})]) |
| |
| >>> print(test_dic) |
| OrderedDict([('AWI-ESM-1-1-LR_AWI', {'r1i1p1f1': {'grid': 'gn'}}), ('CESM2_NCAR', {'r1i1p1f1': {'grid': 'gn'}}), ('IPSL-CM6A-LR_IPSL', {'r1i1p1f1': {'grid': 'gr'}, 'r1i1p1f2': {'grid': 'gr'}, 'r1i1p1f3': {'grid': 'gr'}, 'r1i1p1f4': {'grid': 'gr'}})]) |
| |
| >>> pprint.pprint(test_dic) |
| OrderedDict([('AWI-ESM-1-1-LR_AWI', {'r1i1p1f1': {'grid': 'gn'}}), |
| ('CESM2_NCAR', {'r1i1p1f1': {'grid': 'gn'}}), |
| ('IPSL-CM6A-LR_IPSL', |
| {'r1i1p1f1': {'grid': 'gr'}, |
| 'r1i1p1f2': {'grid': 'gr'}, |
| 'r1i1p1f3': {'grid': 'gr'}, |
| 'r1i1p1f4': {'grid': 'gr'}})]) |
| </code> |
| |
/* | /* |