Question

In: Computer Science

Python Add a command to this chapter’s case study program that allows the user to view...

Python

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 to use:

"""

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

def viewFile(dirName):

   # write 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()

Solutions

Expert Solution

  


Related Solutions

Create a python program that will: prompt a user for a command Command get_data Level 1:...
Create a python program that will: prompt a user for a command Command get_data Level 1: Take one of the commands my_max my_min my_range my_sum mean median mode fib factorize prime Requirements: Your commands should be case-insensitive You should use python lists to store data You should NOT use built-in python math functions, or math libraries to compute these values Tips: Write one function that will convert a string with comma-separated numbers into a python list with the numbers. You...
Write a Java program that allows the user to specify a file name on the command...
Write a Java program that allows the user to specify a file name on the command line and prints the number of characters, words, lines, average number of words per line, and average number of characters per word in that file. If the user does not specify any file name, then prompt the user for the name.
Create a Python program that: Allows the user to enter a phrase or sentence. The program...
Create a Python program that: Allows the user to enter a phrase or sentence. The program should then take the phrase or sentence entered Separate out the individual words entered Each individual word should then be added to a list After all of the words have been place in a list Sort the contents of the list Display the contents of the sorted list with each individual word displayed on a separate line Display a message to the user indicating...
How to do this in Python (using Lists): Create a python program that allows a user...
How to do this in Python (using Lists): Create a python program that allows a user to display, sort and update as needed a List of U.S States containing the State Capital and State Bird. You will need to embed the State data into your Python code. The user interface will allow the user to perform the following functions: 1. Display all U.S. States in Alphabetical order along with Capital and Bird 2. Search for a specific state and display...
Python programming: Instructions: The python program should respond to user input on a command line Below...
Python programming: Instructions: The python program should respond to user input on a command line Below are the four options - if the user input is A, the program will quit -if the user input is B, the program will display the number of times the prompt has been displayed -if the user input is C, will display whatever is stored. -if the user inputs something else, it will store that user input as a string and append it to...
Use Visual Python or equivalent, to write a program that allows the user to observe the...
Use Visual Python or equivalent, to write a program that allows the user to observe the following: Damped and forced harmonic oscillators. The program should be user friendly and have default values for the initial velocities, positions, masses, and spring constants as well as damping constants. Values and frequencies for the forced oscillators should also be given. It should allow the user to input values for the velocities, positions, spring constants, and masses. The program should determine automatically the scale...
9) This is in Python Code a program that allows the user to manage its expenses...
9) This is in Python Code a program that allows the user to manage its expenses accepting the following commands: - Add <player_name> -> This command adds a new player to the system. Assume there can’t be repeated names. If a name already exists then an error is shown to the user. - Score <player_name> <score> -> This command adds the score to the player with the name player-name. Each score needs to be added individually - Report -> This...
Write in Python and as 2 seperate programs Write a program that allows the user to...
Write in Python and as 2 seperate programs Write a program that allows the user to enter the total rainfall for each of 12 months into a LIST. The program should calculate and display the total rainfall for the year, the average monthly rainfall, and the months with the highest and lowest rainfall amounts. Data: January 7.9 inches February 10.1 inches March 3.4 inches April 6.7 inches May 8.9 inches June 9.4 inches July 5.9 inches August 4.1 inches September...
Jack just completed the program for the Flesch text analysis from this chapter’s case study. His...
Jack just completed the program for the Flesch text analysis from this chapter’s case study. His supervisor, Jill, has discovered an error in his code. The error causes the program to count a syllable containing consecutive vowels as multiple syllables. Suggest a solution to this problem in Jack’s code and modify the program so that it handles these cases correctly. An example text and the program input and output is shown below: example.txt Or to take arms against a sea...
In Python, write a program that allows the user to enter a number between 1-5 and...
In Python, write a program that allows the user to enter a number between 1-5 and returns the vitamins benefits based on what the user entered. The program should: Continue to run until the user quits and Validate the user’s input (the only acceptable input is 0, 1, 2, 3, 4, or 5), If the user enters zero “0” the program should terminate You can use the following facts: 1- Vitamin A protects eyes from night blindness and age-related decline...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT