Instructions Add a command to this chapter’s case study program that allows the user to view the contents of a file in the current working directory. When the command is selected, the program should display a list of filenames and a prompt for the name of the file to be viewed. Be sure to include error recovery in the program. If the user enters a filename that does not exist they should be prompted to enter a filename that does exist. An example of the program input and output is shown below: /root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 7 Files in /root/sandbox: filesys.py example.txt Enter a file name from these names: example.txt THIS IS CONTENT OF AN EXAMPLE FILE. /root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 8 Have a nice day! """ File: filesys.py Project 6.6 Provides a menu-driven tool for navigating a file system and gathering information on files. Adds a command to view a file's contents. """ import os, os.path QUIT = '8' COMMANDS = ('1', '2', '3', '4', '5', '6', '8') MENU = """1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 8 Quit the program""" def main(): while True: print(os.getcwd()) print(MENU) command = acceptCommand() runCommand(command) if command == QUIT: print("Have a nice day!") break def acceptCommand(): """Inputs and returns a legitimate command number.""" while True: command = input("Enter a number: ") if not command in COMMANDS: print("Error: command not recognized") else: return command def runCommand(command): """Selects and runs a command.""" if command == '1': listCurrentDir(os.getcwd()) elif command == '2': moveUp() elif command == '3': moveDown(os.getcwd()) elif command == '4': print("The total number of files is", \ countFiles(os.getcwd())) elif command == '5': print("The total number of bytes is", \ countBytes(os.getcwd())) elif command == '6': target = input("Enter the search string: ") fileList = findFiles(target, os.getcwd()) if not fileList: print("String not found") else: for f in fileList: print(f) # add your condition here elif command == '8': print("Files in", os.getcwd()) print(listCurrentDir(os.getcwd())) viewFile = input("Enter a file name from these names: ") viewFile() def viewFile(dirName): # write your code here f = open("viewFile", "r") print(f.read) print("") def listCurrentDir(dirName): """Prints a list of the cwd's contents.""" lyst = os.listdir(dirName) for element in lyst: print(element) def moveUp(): """Moves up to the parent directory.""" os.chdir("..") def moveDown(currentDir): """Moves down to the named subdirectory if it exists.""" newDir = input("Enter the directory name: ") if os.path.exists(currentDir + os.sep + newDir) and \ os.path.isdir(newDir): os.chdir(newDir) else: print("ERROR: no such name") def countFiles(path): """Returns the number of files in the cwd and all its subdirectories.""" count = 0 lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): count += 1 else: os.chdir(element) count += countFiles(os.getcwd()) os.chdir("..") return count def countBytes(path): """Returns the number of bytes in the cwd and all its subdirectories.""" count = 0 lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): count += os.path.getsize(element) else: os.chdir(element) count += countBytes(os.getcwd()) os.chdir("..") return count def findFiles(target, path): """Returns a list of the file names that contain the target string in the cwd and all its subdirectories.""" files = [] lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): if target in element: files.append(path + os.sep + element) else: os.chdir(element) files.extend(findFiles(target, os.getcwd())) os.chdir("..") return files if __name__ == "__main__": main()
Instructions Add a command to this chapter’s case study program that allows the user to view the contents of a file in the current working directory. When the command is selected, the program should display a list of filenames and a prompt for the name of the file to be viewed. Be sure to include error recovery in the program. If the user enters a filename that does not exist they should be prompted to enter a filename that does exist. An example of the program input and output is shown below: /root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 7 Files in /root/sandbox: filesys.py example.txt Enter a file name from these names: example.txt THIS IS CONTENT OF AN EXAMPLE FILE. /root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 8 Have a nice day! """ File: filesys.py Project 6.6 Provides a menu-driven tool for navigating a file system and gathering information on files. Adds a command to view a file's contents. """ import os, os.path QUIT = '8' COMMANDS = ('1', '2', '3', '4', '5', '6', '8') MENU = """1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 8 Quit the program""" def main(): while True: print(os.getcwd()) print(MENU) command = acceptCommand() runCommand(command) if command == QUIT: print("Have a nice day!") break def acceptCommand(): """Inputs and returns a legitimate command number.""" while True: command = input("Enter a number: ") if not command in COMMANDS: print("Error: command not recognized") else: return command def runCommand(command): """Selects and runs a command.""" if command == '1': listCurrentDir(os.getcwd()) elif command == '2': moveUp() elif command == '3': moveDown(os.getcwd()) elif command == '4': print("The total number of files is", \ countFiles(os.getcwd())) elif command == '5': print("The total number of bytes is", \ countBytes(os.getcwd())) elif command == '6': target = input("Enter the search string: ") fileList = findFiles(target, os.getcwd()) if not fileList: print("String not found") else: for f in fileList: print(f) # add your condition here elif command == '8': print("Files in", os.getcwd()) print(listCurrentDir(os.getcwd())) viewFile = input("Enter a file name from these names: ") viewFile() def viewFile(dirName): # write your code here f = open("viewFile", "r") print(f.read) print("") def listCurrentDir(dirName): """Prints a list of the cwd's contents.""" lyst = os.listdir(dirName) for element in lyst: print(element) def moveUp(): """Moves up to the parent directory.""" os.chdir("..") def moveDown(currentDir): """Moves down to the named subdirectory if it exists.""" newDir = input("Enter the directory name: ") if os.path.exists(currentDir + os.sep + newDir) and \ os.path.isdir(newDir): os.chdir(newDir) else: print("ERROR: no such name") def countFiles(path): """Returns the number of files in the cwd and all its subdirectories.""" count = 0 lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): count += 1 else: os.chdir(element) count += countFiles(os.getcwd()) os.chdir("..") return count def countBytes(path): """Returns the number of bytes in the cwd and all its subdirectories.""" count = 0 lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): count += os.path.getsize(element) else: os.chdir(element) count += countBytes(os.getcwd()) os.chdir("..") return count def findFiles(target, path): """Returns a list of the file names that contain the target string in the cwd and all its subdirectories.""" files = [] lyst = os.listdir(path) for element in lyst: if os.path.isfile(element): if target in element: files.append(path + os.sep + element) else: os.chdir(element) files.extend(findFiles(target, os.getcwd())) os.chdir("..") return files if __name__ == "__main__": main()
Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
Related questions
Question
Instructions
Add a command to this chapter’s case study program that allows the user to view the contents of a file in the current working directory. When the command is selected, the program should display a list of filenames and a prompt for the name of the file to be viewed.
Be sure to include error recovery in the program. If the user enters a filename that does not exist they should be prompted to enter a filename that does exist.
An example of the program input and output is shown below:
/root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 7 Files in /root/sandbox: filesys.py example.txt Enter a file name from these names: example.txt THIS IS CONTENT OF AN EXAMPLE FILE. /root/sandbox 1 List the current directory 2 Move up 3 Move down 4 Number of files in the directory 5 Size of the directory in bytes 6 Search for a file name 7 View the contents of a file 8 Quit the program Enter a number: 8 Have a nice day!"""
File: filesys.py
Project 6.6
Provides a menu-driven tool for navigating a file system
and gathering information on files.
Adds a command to view a file's contents.
"""
import os, os.path
QUIT = '8'
COMMANDS = ('1', '2', '3', '4', '5', '6', '8')
MENU = """1 List the current directory
2 Move up
3 Move down
4 Number of files in the directory
5 Size of the directory in bytes
6 Search for a file name
8 Quit the program"""
def main():
while True:
print(os.getcwd())
print(MENU)
command = acceptCommand()
runCommand(command)
if command == QUIT:
print("Have a nice day!")
break
def acceptCommand():
"""Inputs and returns a legitimate command number."""
while True:
command = input("Enter a number: ")
if not command in COMMANDS:
print("Error: command not recognized")
else:
return command
def runCommand(command):
"""Selects and runs a command."""
if command == '1':
listCurrentDir(os.getcwd())
elif command == '2':
moveUp()
elif command == '3':
moveDown(os.getcwd())
elif command == '4':
print("The total number of files is", \
countFiles(os.getcwd()))
elif command == '5':
print("The total number of bytes is", \
countBytes(os.getcwd()))
elif command == '6':
target = input("Enter the search string: ")
fileList = findFiles(target, os.getcwd())
if not fileList:
print("String not found")
else:
for f in fileList:
print(f)
# add your condition here
elif command == '8':
print("Files in", os.getcwd())
print(listCurrentDir(os.getcwd()))
viewFile = input("Enter a file name from these names: ")
viewFile()
def viewFile(dirName):
# write your code here
f = open("viewFile", "r")
print(f.read)
print("")
def listCurrentDir(dirName):
"""Prints a list of the cwd's contents."""
lyst = os.listdir(dirName)
for element in lyst: print(element)
def moveUp():
"""Moves up to the parent directory."""
os.chdir("..")
def moveDown(currentDir):
"""Moves down to the named subdirectory if it exists."""
newDir = input("Enter the directory name: ")
if os.path.exists(currentDir + os.sep + newDir) and \
os.path.isdir(newDir):
os.chdir(newDir)
else:
print("ERROR: no such name")
def countFiles(path):
"""Returns the number of files in the cwd and
all its subdirectories."""
count = 0
lyst = os.listdir(path)
for element in lyst:
if os.path.isfile(element):
count += 1
else:
os.chdir(element)
count += countFiles(os.getcwd())
os.chdir("..")
return count
def countBytes(path):
"""Returns the number of bytes in the cwd and
all its subdirectories."""
count = 0
lyst = os.listdir(path)
for element in lyst:
if os.path.isfile(element):
count += os.path.getsize(element)
else:
os.chdir(element)
count += countBytes(os.getcwd())
os.chdir("..")
return count
def findFiles(target, path):
"""Returns a list of the file names that contain
the target string in the cwd and all its subdirectories."""
files = []
lyst = os.listdir(path)
for element in lyst:
if os.path.isfile(element):
if target in element:
files.append(path + os.sep + element)
else:
os.chdir(element)
files.extend(findFiles(target, os.getcwd()))
os.chdir("..")
return files
if __name__ == "__main__":
main()
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution!
Trending now
This is a popular solution!
Step by step
Solved in 2 steps

Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Recommended textbooks for you

Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON

Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON

C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON

Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning

Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education