I719 Fundamentals of Python/lecture3
From ICO wiki
Jump to navigationJump to search
Lecture 3
Lets review! - lists - dictionaries - strings - comparison operators
Command line arguments
The standard library has sys
which give us access to the command line arguments executed.
import sys
if '-h' in sys.argv or '--help' in sys.argv:
print('Sorry I can\'t help you :(')
But argparse
from the standard library is much easier if we want to use the commandline arguments.
File opening
f = open(filename)
# interact with the file
f.close()
# is the same as
with open(filename) as f:
# interact with the file
here is an example of a script that opens a file, and print all lines in the file. The file name is specified as the first command line argument
"""
Print all lines in file
"""
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('file_name')
args = parser.parse_args()
text_file = open(args.file_name)
for line in text_file:
cleaned_line = line.strip() # Remove newline, i.e. '\n' or '\r\n'
print(cleaned_line)
text_file.close()
if __name__ == '__main__':
main()
TASK 1
Print out a dictionary with words and the number of occurences of the word.
Example output:
{'Apple': 10, 'Bananan': 1}
How to count words in a list of words
>>> words = ['hello', 'hi', 'hello']
>>> wc = {}
>>> for word in words:
... if word in wc:
... wc[word] = wc[word] + 1
... else:
... wc[word] = 1
...
...
...
>>> wc
{'hello': 2, 'hi': 1}
>>>
Task 2
Make a new csv file and save it, where the age become year born.
Solution
"""
convert input csv to output csv
"""
import argparse
import csv
def convert_age_in_csv(data_in, data_out):
reader = csv.reader(data_in)
writer = csv.writer(data_out)
for row in reader:
name = row[0].strip()
age = int(row[1])
year_born = 2017 - age
writer.writerow([name, year_born])
def main():
parser = argparse.ArgumentParser()
parser.add_argument('data_in')
parser.add_argument('data_out')
args = parser.parse_args()
with open(args.data_in, 'r') as data_in:
with open(args.data_out, 'w') as data_out:
convert_age_in_csv(data_in, data_out)
if __name__ == '__main__':
main()
How to execute
python3 csvconverter.py input.csv output.csv