This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
other:python:misc_by_jyp [2021/08/25 12:00] jypeter [Working with paths and filenames] Added more examples |
other:python:misc_by_jyp [2021/09/17 14:05] jypeter [Printing a readable version of long lists or dictionaries] Added long list example |
||
---|---|---|---|
Line 54: | Line 54: | ||
=== Example: getting the full path of the Python used === | === Example: getting the full path of the Python used === | ||
- | <code>>>> import shutil | + | Note: the actual python may be different from the default python! |
- | >>> my_python = shutil.which('python') | + | |
- | >>> my_python | + | <code>$ which python |
- | '/home/share/unix_files/cdat/miniconda3_21-02/envs/cdatm_py3/bin/python'</code> | + | /usr/bin/python |
+ | |||
+ | $ /modfs/modtools/miniconda3//envs/analyse_3.6_test/bin/python | ||
+ | >>> import sys, shutil | ||
+ | >>> shutil.which('python') | ||
+ | '/usr/bin/python' | ||
+ | >>> sys.executable | ||
+ | '/modfs/modtools/miniconda3//envs/analyse_3.6_test/bin/python'</code> | ||
Line 95: | Line 102: | ||
>>> sum(files_sizes) | >>> sum(files_sizes) | ||
64792</code> | 64792</code> | ||
+ | |||
+ | ==== Generating file names ==== | ||
+ | |||
+ | === Name depending on the current date/time === | ||
+ | |||
+ | <code>>>> import time | ||
+ | >>> plot_version = time.strftime('%Y%m%d_%H%M') | ||
+ | >>> f_name = 'test_%s.nc' % (plot_version,) | ||
+ | >>> f_name | ||
+ | 'test_20210827_1334.nc' | ||
+ | </code> | ||
+ | |||
+ | === Temporary file === | ||
+ | |||
+ | <code>>>> import tempfile, os | ||
+ | >>> f_tmp = tempfile.NamedTemporaryFile(mode='w', suffix='.nc', delete=False) | ||
+ | >>> f_tmp | ||
+ | <tempfile._TemporaryFileWrapper object at 0x2b5614743820> | ||
+ | >>> f_tmp.name | ||
+ | '/tmp/tmpi6uk9hre.nc' | ||
+ | >>> f_tmp.close() | ||
+ | >>> os.remove(f_tmp.name)</code> | ||
==== Using command-line arguments ==== | ==== Using command-line arguments ==== | ||
Line 141: | Line 170: | ||
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 | 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 | + | <code>>>> import 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'}})]) | + | >>> test_dic = {'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) | >>> 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'}})]) | + | {'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) | >>> pprint.pprint(test_dic) | ||
- | OrderedDict([('AWI-ESM-1-1-LR_AWI', {'r1i1p1f1': {'grid': 'gn'}}), | + | {'AWI-ESM-1-1-LR_AWI': {'r1i1p1f1': {'grid': 'gn'}}, |
- | ('CESM2_NCAR', {'r1i1p1f1': {'grid': 'gn'}}), | + | 'CESM2_NCAR': {'r1i1p1f1': {'grid': 'gn'}}, |
- | ('IPSL-CM6A-LR_IPSL', | + | 'IPSL-CM6A-LR_IPSL': {'r1i1p1f1': {'grid': 'gr'}, |
- | {'r1i1p1f1': {'grid': 'gr'}, | + | 'r1i1p1f2': {'grid': 'gr'}, |
- | 'r1i1p1f2': {'grid': 'gr'}, | + | 'r1i1p1f3': {'grid': 'gr'}, |
- | 'r1i1p1f3': {'grid': 'gr'}, | + | 'r1i1p1f4': {'grid': 'gr'}}} |
- | 'r1i1p1f4': {'grid': 'gr'}})]) | + | |
+ | >>> dir(test_dic) | ||
+ | ['__class__', '__contains__', '__delattr__', [... lots of unreadable stuff removed...] 'setdefault', 'update', 'values'] | ||
+ | |||
+ | >>> pprint.pprint(dir(test_dic)) | ||
+ | ['__class__', | ||
+ | '__contains__', | ||
+ | |||
+ | [... lots of lines removed in this example ] | ||
+ | |||
+ | 'setdefault', | ||
+ | 'update', | ||
+ | 'values'] | ||
</code> | </code> | ||