def put(f, s3_path, multipart_chunk_size_mb=<NUM_LIT>, logger=None):
if not logger:<EOL><INDENT>logger = log.get_logger('<STR_LIT>')<EOL><DEDENT>fname = os.path.basename(f)<EOL>target = os.path.join(s3_path, fname)<EOL>s3cmd_cline = '<STR_LIT>'.format(f,<EOL>target,<EOL>multipart_chunk_size_mb)<EOL>print_put_info(fname, target, logger)<EOL>s3cmd = sp.Popen(s3cmd_cline,<EOL>stdout=sp.PIPE,<EOL>stderr=sp.PIPE,<EOL>shell=True)<EOL>stdout, stderr = s3cmd.communicate()<EOL>
Uploads a single file to S3, using s3cmd.

Args:

    f (str): Path to a single file.

    s3_path (str): The S3 path, with the filename omitted. The S3 filename
        will be the basename of the ``f``. For example::

            put(f='/path/to/myfile.tar.gz', s3_path='s3://my_bucket/path/to/')

        will result in an uploaded S3 path of ``s3://my_bucket/path/to/myfile.tar.gz``