0% found this document useful (0 votes)
16 views9 pages

19 Files

The document covers file input/output in Python, including how to open files, read their contents, and split strings. It provides examples of reading temperature changes from a weather file and calculating average gas prices from a gas prices file. The document also explains absolute and relative file paths.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views9 pages

19 Files

The document covers file input/output in Python, including how to open files, read their contents, and split strings. It provides examples of reading temperature changes from a weather file and calculating average gas prices from a gas prices file. The document also explains absolute and relative file paths.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

CEN217, Fall 2019

Lecture 19: While loops and File Input


Adapted from slides by Marty Stepp and Stuart Reges
File Input/output (I/O)
• name = open("filename")
• opens the given file for reading, and returns a file object

• name.read() - file's entire contents as a string

>>> f = open("hours.txt")
>>> f.read()
'123 Brett 12.5 8.1 7.6 3.2\n
456 Sarina 4.0 11.6 6.5 2.7 12\n
789 Nick 8.0 8.0 8.0 8.0 7.5\n'
File paths
• absolute path: specifies a drive or a top "/" folder
C:/Documents/smith/hw6/input/data.csv
• Windows can also use backslashes to separate folders.
• relative path: does not specify any top-level folder
names.dat
input/kinglear.txt
• Assumed to be relative to the current directory:
file = open("data/readme.txt")
If our program is inH:/hw6 ,
open will look for H:/hw6/data/readme.txt
split
You can use the split function to break a file apart
• str.split() - splits a string on blank space
• str.split(other_str) - splits a string on occurrences of the
other string
>>> f = open("hours.txt")
>>> text = f.read()
'1\n2\n45\n6\n'

>>> f = text.split()
['1', '2', '45', '6']
Looping through a file
• The result of split can be used in a for ... in loop

• A template for reading files in Python:

file = open("filename")
text = file.read()
text = text.split()
for line in text:
statements
16.2
File input question 23.5
19.1
7.4
22.8
18.5
• We have a file weather.txt: -1.8
14.9
• Write a program that prints the change in temperature between each
pair of neighboring days.
16.2 to 23.5, change = 7.3
23.5 to 19.1, change = -4.4
19.1 to 7.4, change = -11.7
7.4 to 22.8, change = 15.4
22.8 to 18.5, change = -4.3
18.5 to -1.8, change = -20.3
-1.8 to 14.9, change = 16.7
File input answer
# Displays changes in temperature from data in an input file.

def main():
input = open("weather.txt"))
lines = input.read().split()
prev = float(lines[0]) # fencepost

for i in range(1, len(lines)):


next = float(lines[i])
print(prev, "to", next, ", change =", (next - prev))
prev = next
Gas prices question
• Write a program that reads a file gasprices.txt
• Format: Belgium $/gal
US $/gal
date

8.20
3.81
3/21/11
8.08
3.84
3/28/11
...

• The program should print the average gas price over all data in the file for both countries:
Belgium average: 8.3
USA average: 3.9
Gas prices solution
def main():
file = open("gasprices.txt")
belgium = 0
usa = 0
count = 0
lines = file.read().split()

for i in range(0, len(lines), 3):


belgium += float(lines[i])
usa += float(lines[i + 1])

print("Belgium average:", (belgium / count), "$/gal")


print("USA average:", (usa / count), "$/gal")

You might also like