Archive
Write Python inside Bash
Problem
You want to embed Python code inside a Bash script.
Solution
Here is a possible solution:
#!/usr/bin/bash
# name.sh
# Example:
# Write a bash script that has one parameter: your name.
# It prints every second character of your name.
TFILE="`basename $0`.$$.py"
cat <<END >$TFILE
#!/usr/bin/env python
import re
import sys
bash_name = re.sub(r'\.\d+\.py', '', sys.argv[0])
def process(s):
print s[::2]
def main():
if len(sys.argv) > 1:
process(sys.argv[1])
else:
print "Usage: {0} <parameter>".format(bash_name)
if __name__ == "__main__":
main()
END
chmod u+x $TFILE
./$TFILE "$@"
/bin/rm $TFILE
Usage:
./name.sh Your_Name Yu_ae # output
Handle CTRL+C in your script
Question
In your script you want to handle the SIGINT signal, i.e. when the user wants to stop the script with CTRL+C, you want to call a function to handle the situation.
Answer
Here is an example:
#!/usr/bin/env python
import signal
import time
def sigint_handler(signum, frame):
print 'Stop pressing the CTRL+C!'
signal.signal(signal.SIGINT, sigint_handler)
def main():
while True:
print '.'
time.sleep(1)
##########
if __name__ == "__main__":
main()
Now the script is immune against CTRL+C. You will have to kill it (“kill <PID>”) if you want to stop it.
If you want protection against “kill <PID>”, handle the SIGTERM signal too :)
Roman numbers to decimal
Problem
You want to convert Roman numbers to decimal and decimal numbers to Roman numbers.
Solution
I found a module for this task called romanclass (http://pypi.python.org/pypi/romanclass).
I wrote a simple wrapper around it, available here.
Blog Stats
- 1,652,047 hits
Random Post
Recent Posts
Archives
- December 2025 (1)
- December 2024 (2)
- March 2024 (1)
- February 2024 (3)
- June 2023 (1)
- December 2022 (1)
- May 2022 (1)
- March 2022 (1)
- February 2022 (2)
- October 2020 (3)
- September 2020 (2)
- July 2020 (1)
- December 2019 (1)
- November 2019 (7)
- June 2019 (2)
- May 2019 (1)
- February 2019 (1)
- January 2019 (1)
- August 2018 (1)
- July 2018 (4)
- June 2018 (5)
- May 2018 (1)
- March 2018 (2)
- February 2018 (1)
- January 2018 (2)
- December 2017 (2)
- October 2017 (1)
- August 2017 (1)
- May 2017 (2)
- April 2017 (1)
- March 2017 (1)
- February 2017 (3)
- January 2017 (5)
- December 2016 (3)
- October 2016 (2)
- September 2016 (1)
- August 2016 (4)
- July 2016 (3)
- June 2016 (2)
- May 2016 (2)
- April 2016 (1)
- March 2016 (4)
- February 2016 (1)
- January 2016 (4)
- December 2015 (5)
- November 2015 (8)
- October 2015 (2)
- September 2015 (3)
- August 2015 (6)
- July 2015 (4)
- June 2015 (1)
- May 2015 (3)
- April 2015 (2)
- February 2015 (1)
- January 2015 (6)
- December 2014 (5)
- November 2014 (2)
- October 2014 (1)
- September 2014 (1)
- August 2014 (14)
- July 2014 (3)
- June 2014 (6)
- May 2014 (3)
- April 2014 (2)
- March 2014 (4)
- February 2014 (3)
- January 2014 (19)
- December 2013 (8)
- November 2013 (9)
- October 2013 (4)
- September 2013 (10)
- August 2013 (16)
- July 2013 (4)
- June 2013 (7)
- May 2013 (7)
- April 2013 (3)
- March 2013 (12)
- February 2013 (2)
- January 2013 (10)
- December 2012 (18)
- November 2012 (3)
- October 2012 (4)
- September 2012 (5)
- August 2012 (1)
- July 2012 (1)
- May 2012 (8)
- April 2012 (9)
- March 2012 (17)
- February 2012 (3)
- January 2012 (8)
- November 2011 (11)
- October 2011 (7)
- September 2011 (17)
- August 2011 (5)
- June 2011 (1)
- May 2011 (7)
- April 2011 (21)
- March 2011 (21)
- February 2011 (7)
- December 2010 (4)
- November 2010 (1)
- October 2010 (16)
- September 2010 (15)

You must be logged in to post a comment.