Я пытаюсь написать функцию, которая позволяет выбрать файл из заданного каталога, функция называется openFile. Есть идеи о том, как я это сделаю? У меня есть начало, но все, что я ввожу, кажется, выходит из-за отсутствия в каталоге. Вывод никогда не выходит как открытие файла. Просто немного потерян на все это. Я не думаю, что мне нужно что-то менять, кроме функции openFile в коде. Остальной код предоставлен нашим учебником.
"""
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', '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 Quit the program
8 View a file in the current directory"""
def main():
while True:
print(os.getcwd())
print(MENU)
command = acceptCommand()
runCommand(command)
if command == QUIT:
print("Have a nice day!")
break
def openFile(dirName):
"""Allows user to view list of files in directory and view them."""
lyst = os.listdir(dirName)
for element in lyst: print(element)
userinput = open(input('Enter file name: '))
if userinput == os.listdir:
open(userinput)
else:
print('\nFile not in directory\n')
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)
elif command == '8':
openFile(os.getcwd())
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()