-
Notifications
You must be signed in to change notification settings - Fork 35
/
helloworld.py
95 lines (75 loc) · 3.18 KB
/
helloworld.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# -*- coding: utf-8 -*-
"""REANA-Demo-HelloWorld is a minimal demonstration of REANA system."""
from __future__ import absolute_import, print_function
import argparse
import errno
import logging
import os
import sys
import time
logging.basicConfig(
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging.INFO,
datefmt='%Y-%m-%dT%H:%M:%S')
def hello(inputfile="data/names.txt", outputfile="results/greetings.txt",
sleeptime=0.0):
"""Say 'Hello' to given name and store the greeting to a file.
Writes the greeting character by character. An optional waiting period
between writing of each character can be specified.
:param inputfile: The relative path to the file containing the names
of the persons to greet.
:param outputfile: The relative path to the file where greeting
should be stored. Creates the file if it does not exist.
:param sleeptime: A waiting period (in seconds) between writing
characters of greeting.
"""
# detect names to greet:
names = []
with open(inputfile, 'r') as f:
for line in f.readlines():
names.append(line.strip())
# ensure output directory exists:
# influenced by http://stackoverflow.com/a/12517490
if not os.path.exists(os.path.dirname(outputfile)):
try:
os.makedirs(os.path.dirname(outputfile))
except OSError as exc: # guard against race condition
if exc.errno != errno.EEXIST:
raise
# write greetings:
with open(outputfile, "at") as f:
for name in names:
message = "Hello " + name + "!\n"
for char in message:
f.write("{}".format(char))
f.flush()
time.sleep(sleeptime)
f.close()
return
if __name__ == '__main__':
args = sys.argv[1:]
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--inputfile",
help="Relative path to the file containing \
the names of the persons to greet. \n \
[default=data/names.txt]",
default="data/names.txt",
required=False)
parser.add_argument("-o", "--outputfile",
help="Relative path to the file where greeting \
should be stored. \n \
[default=results/greetings.txt]",
default="results/greetings.txt",
required=False)
parser.add_argument("-s", "--sleeptime",
help="Waiting period (in seconds) between \
writing characters of greeting. \n \
[default=1]",
default=1.0,
type=float,
required=False)
parsed_args = parser.parse_args(args)
logging.info("Parameters: inputfile={0} outputfile={1} sleeptime={2}"
.format(parsed_args.inputfile, parsed_args.outputfile,
parsed_args.sleeptime))
hello(parsed_args.inputfile, parsed_args.outputfile, parsed_args.sleeptime)