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, 21.06.2019 21:00
Analyze the following code. int x = 1; while (0 < x) & & (x < 100) system.out.println(x++); a. the loop runs forever. b. the code does not compile because the loop body is not in the braces. c. the code does not compile because (0 < x) & & (x < 100) is not enclosed in a pair of parentheses. d. the numbers 1 to 99 are displayed. e. the numbers 2 to 100 are displayed.
Answers: 3
question
Computers and Technology, 23.06.2019 02:00
Which demographic challenge is europe currently experiencing? a. an aging and decreasing population b. a baby boomc. an unequal distribution between males and females d. a large group of teenagers moving through the school system(i chose a but i'm unsure)
Answers: 1
question
Computers and Technology, 23.06.2019 02:30
Research data that is presented using descriptive language is said to be
Answers: 2
question
Computers and Technology, 23.06.2019 06:30
To become an audio technician, the most successful tactics might include the following. (select all that apply). learning how to persuade other people gaining different types of experience in audio technology learning as much as possible about art history establishing a reputation as a reliable professional
Answers: 1
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
Mathematics, 06.10.2021 14:00
question
Mathematics, 06.10.2021 14:00
question
Mathematics, 06.10.2021 14:00
question
Computers and Technology, 06.10.2021 14:00
question
Mathematics, 06.10.2021 14:00
question
Mathematics, 06.10.2021 14:00
Questions on the website: 13722367