Refer to filesys1.py(copy-pasted below) from your Python directory. Test all menu options

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
icon
Related questions
Question
 
Refer to filesys1.py(copy-pasted below) from your Python directory. Test all menu options
 
 
 

"""

Program: filesys.py

Author: Ken

 

Provides a menu-driven tool for navigating a file system

and gathering information on files.

"""

 

import os, os.path

 

QUIT = '7'

 

COMMANDS = ('1', '2', '3', '4', '5', '6', '7')

 

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   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)

 

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

 

main()

 

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps with 11 images

Blurred answer
Knowledge Booster
Linux
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.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
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)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education