如何在使用 python 中的函数检查文件是否存在时继续循环
How to continue loop while checking if file exists using function in python
我正在尝试创建一个代码,该代码将使用一个函数来检查文件是否存在,如果不存在,它将再次要求用户输入文件名。这个循环应该继续,直到给出一个现有的文件名。我设法使用一个函数来做同样的概念来检查第一个输入是否是一个整数,但我似乎无法在不出现错误的情况下为文件名部分复制它(FileNotFoundError:[Errno 2]没有这样的文件或目录: ) 并结束循环。 (它仍然打印 "not valid file" 位,但以错误结束)
这是我的代码片段:
def checkInt(val):
try:
val = int(val)
return val
except:
print('Not a valid integer')
def checkFile(fileName):
try:
File = open(fileName)
File.close
except:
print('Not a valid file.')
def main():
print('Hi welcome to the file processor')
while 1:
val = checkInt(input('''Selection Menu:
0. Exit program
1. Read from a file
'''))
if val == 0:
print('goodbye')
quit()
elif val == 1:
fileName = input('Enter a file name: ')
checkFile(fileName)
inFile = open(fileName,'r')
print(inFile.read())
inFile.close
main()
我觉得这是一个明显的错误,非常感谢您的见解!
您可以在循环中添加 exception FileNotFoundError:
和 continue
:
def checkInt(val):
try:
val = int(val)
return val
except:
print('Not a valid integer')
def main():
print('Hi welcome to the file processor')
while 1:
val = checkInt(input('''Selection Menu:
0. Exit program
1. Read from a file
'''))
if val == 0:
print('goodbye')
exit()
elif val == 1:
fileName = input('Enter a file name: ')
checkInt()
inFile = open(fileName, 'r')
print(inFile.read())
inFile.close
输出:
Hi welcome to the file processor
Selection Menu:
0. Exit program
1. Read from a file
1
Enter a file name: blahblah
Not a valid file.
Selection Menu:
0. Exit program
1. Read from a file
1
Enter a file name: hey.txt
5,7,11,13,17,19,23,29,31,37,41,43,47,
Selection Menu:
0. Exit program
1. Read from a file
编辑:
您可以在 checkFile
方法中执行相同的操作,只需调用您的 main()
:
def checkFile(fileName):
try:
File = open(fileName)
File.close
except FileNotFoundError:
print('Not a valid file.')
main()
import os
def checkFile():
file_name = input("Enter File name: ")
while(os.path.isfile(file_name )==False):
print("Not a valid file")
file_name = input("Enter File name: ")
return True # if the function is expecting a boolen, else return the filename to open it
我正在尝试创建一个代码,该代码将使用一个函数来检查文件是否存在,如果不存在,它将再次要求用户输入文件名。这个循环应该继续,直到给出一个现有的文件名。我设法使用一个函数来做同样的概念来检查第一个输入是否是一个整数,但我似乎无法在不出现错误的情况下为文件名部分复制它(FileNotFoundError:[Errno 2]没有这样的文件或目录: ) 并结束循环。 (它仍然打印 "not valid file" 位,但以错误结束)
这是我的代码片段:
def checkInt(val):
try:
val = int(val)
return val
except:
print('Not a valid integer')
def checkFile(fileName):
try:
File = open(fileName)
File.close
except:
print('Not a valid file.')
def main():
print('Hi welcome to the file processor')
while 1:
val = checkInt(input('''Selection Menu:
0. Exit program
1. Read from a file
'''))
if val == 0:
print('goodbye')
quit()
elif val == 1:
fileName = input('Enter a file name: ')
checkFile(fileName)
inFile = open(fileName,'r')
print(inFile.read())
inFile.close
main()
我觉得这是一个明显的错误,非常感谢您的见解!
您可以在循环中添加 exception FileNotFoundError:
和 continue
:
def checkInt(val):
try:
val = int(val)
return val
except:
print('Not a valid integer')
def main():
print('Hi welcome to the file processor')
while 1:
val = checkInt(input('''Selection Menu:
0. Exit program
1. Read from a file
'''))
if val == 0:
print('goodbye')
exit()
elif val == 1:
fileName = input('Enter a file name: ')
checkInt()
inFile = open(fileName, 'r')
print(inFile.read())
inFile.close
输出:
Hi welcome to the file processor
Selection Menu:
0. Exit program
1. Read from a file
1
Enter a file name: blahblah
Not a valid file.
Selection Menu:
0. Exit program
1. Read from a file
1
Enter a file name: hey.txt
5,7,11,13,17,19,23,29,31,37,41,43,47,
Selection Menu:
0. Exit program
1. Read from a file
编辑:
您可以在 checkFile
方法中执行相同的操作,只需调用您的 main()
:
def checkFile(fileName):
try:
File = open(fileName)
File.close
except FileNotFoundError:
print('Not a valid file.')
main()
import os
def checkFile():
file_name = input("Enter File name: ")
while(os.path.isfile(file_name )==False):
print("Not a valid file")
file_name = input("Enter File name: ")
return True # if the function is expecting a boolen, else return the filename to open it