The shutil module include high-level file operations.
In [2]:
import glob
import shutil
print('Before: ', glob.glob('shutil.*'))
shutil.copyfile('shutil.ipynb', 'shutil.copy.ipynb')
print('After:' , glob.glob('shutil.*'))
In [4]:
import glob
import os
import shutil
os.mkdir('examples')
print('Before:', glob.glob('examples/*'))
shutil.copy('shutil.ipynb', 'examples')
print('After:', glob.glob('examples/*'))
In [9]:
import os
import shutil
import time
def show_file_info(filename):
stat_info = os.stat(filename)
print(' mode ', oct(stat_info.st_mode))
print(' created: ', time.ctime(stat_info.st_ctime))
print(' accessed: ', time.ctime(stat_info.st_atime))
print(' Modified: ', time.ctime(stat_info.st_mtime))
os.mkdir('examples')
print('Source:')
show_file_info('shutil.ipynb')
shutil.copy2('shutil.ipynb', 'examples')
print('Dest:')
show_file_info('examples/shutil.ipynb')
In [10]:
import os
import shutil
import subprocess
with open('file_to_change.txt', 'wt') as f:
f.write('content')
os.chmod('file_to_change.txt', 0o444)
print('Before:', oct(os.stat('file_to_change.txt').st_mode))
shutil.copymode('shutil.ipynb', 'file_to_change.txt')
print('After:', oct(os.stat('file_to_change.txt').st_mode))
In [11]:
import glob
import pprint
import shutil
print('Before: ')
pprint.pprint(glob.glob('/tmp/example/*'))
shutil.copytree('../FileSystem', '/tmp/example')
print('After: ')
pprint.pprint(glob.glob('/tmp/example/*'))
In [14]:
import glob
import pprint
import shutil
def verbose_copy(src, dst):
print('copying\n {!r}\n to {!r}'.format(src, dst))
return shutil.copy2(src, dst)
print('BEFORE:')
pprint.pprint(glob.glob('/tmp/example/*'))
print()
shutil.copytree(
'../FileSystem', '/tmp/example',
copy_function=verbose_copy,
ignore=shutil.ignore_patterns('*.py'),
)
print('\nAFTER:')
pprint.pprint(glob.glob('/tmp/example/*'))
In [15]:
import glob
import pprint
import shutil
print('Before:')
pprint.pprint(glob.glob('/tmp/example/*'))
shutil.rmtree('/tmp/example')
print('\nAfter')
pprint.pprint(glob.glob('/tmp/example/*'))
In [16]:
import glob
import shutil
with open('example.txt', 'wt') as f:
f.write('content')
print('Before:', glob.glob('example*'))
shutil.move('example.txt', 'example.out')
print('After:', glob.glob('example*'))
In [17]:
import shutil
print(shutil.which('virtualenv'))
In [18]:
print(shutil.which('java'))
In [20]:
print(shutil.which('tox'))
In [21]:
import shutil
for fm, description in shutil.get_archive_formats():
print('{:<5}:{}'.format(fm, description))
In [26]:
import logging
import shutil
import sys
import tarfile
logging.basicConfig(
format='%(message)s',
stream=sys.stdout,
level=logging.DEBUG
)
logger = logging.getLogger('shutil')
print('Creating archive')
shutil.make_archive(
'example', 'gztar',
root_dir='..',
base_dir='FileSystem',
logger=logger,
)
print('\nArchive contents')
with tarfile.open('example.tar.gz', 'r') as t:
for n in t.getnames():
print(n)
In [28]:
import shutil
total_b, used_b, free_b = shutil.disk_usage('.')
gib = 2 ** 30 # GiB == gibibyte
gb = 10 ** 9 # GB == gigabyte
print('Total: {:6.2f} GB {:6.2f} GiB'.format(
total_b / gb, total_b / gib))
In [29]:
print('Used : {:6.2f} GB {:6.2f} GiB'.format(
used_b / gb, used_b / gib))
print('Free : {:6.2f} GB {:6.2f} GiB'.format(
free_b / gb, free_b / gib))