subject

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!
code that needs to be modified:
import os, os. path

QUIT = '8'

COMMANDS = ('1', '2', '3', '4', '5', '6','7', '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
7 View the contents of a file
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

def viewFile(dirName):
# add your code here
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()

ansver
Answers: 1

Another question on Computers and Technology

question
Computers and Technology, 22.06.2019 05:10
Read the code below. what will the computer print if the input for year_variable is 1700? if year_variable == 1776: print("your answer is correct. the declaration of independence was signed in “year_variable”.") elif year_variable < 1776: compute_variable = 1776 - year_variable. print("add “compute_variable“ years to your answer for the correct answer.") elif year_variable > 1776: compute_variable = year_variable - 1776 print("subtract “compute_variable” years from your answer for the correct answer.")
Answers: 1
question
Computers and Technology, 23.06.2019 13:10
What is domain name system (dns)? allows dynamic ip address allocation so users do not have to have a preconfigured ip address to use the network converts ip addresses into domains, or identifying labels that use a variety of recognizable naming conventions the efficient coexistence of telephone, video, and data communication within a single network, offering convenience and flexibility not possible with separate infrastructures the integration of communication channels into a single service
Answers: 2
question
Computers and Technology, 24.06.2019 00:00
Which tool could be used to display only rows containing presidents who served two terms
Answers: 3
question
Computers and Technology, 24.06.2019 11:00
Need fast im timed in a paragraph of 125 words, explain at least three ways that engineers explore possible solutions in their projects.
Answers: 2
You know the right answer?
Add a command to this chapter’s case study program that allows the user to view the contents of a fi...
Questions
question
Arts, 25.03.2021 20:40
question
Mathematics, 25.03.2021 20:40
question
Mathematics, 25.03.2021 20:40
question
Mathematics, 25.03.2021 20:40
question
Mathematics, 25.03.2021 20:40
Questions on the website: 13722360