我在编写程序时遇到了一些麻烦,并且想知道是否有人可以提供帮助。到目前为止,这是我的代码:
>help
For more information on a specific command, type HELP command-name.
ASSOC Displays or modifies file extension associations.
...
该计划包括两个功能。您看到的第一个函数从文件列表中获取每个文件,查找句点,并返回其后面的内容,即扩展名。
第二个功能(主要功能)是我遇到麻烦的地方。第二个函数是假设在for循环中调用第一个函数来接收列表中所有文件的扩展,然后将所有返回的扩展名与第二个硬编码参数进行比较," py"或" fileExtension"在功能内。如果有" py"在列表中的文件中,该函数应返回true,否则返回false。
答案 0 :(得分:1)
return
退出该函数,它不会在return
语句后继续执行该函数。
在列表中构建结果,然后在for
循环结束后返回它们,或者使用yield
一次一个地传回它们(但是你需要使用一个从结果中循环或构造list
。
def fileExtensionExists(fileList, fileExtension):
extensions = []
for fileName in fileList:
extensions.append(parseExtension(fileList))
return extensions
或
def fileExtensionExists(fileList, fileExtension):
for fileName in fileList:
yield parseExtension(fileList)
print(list(fileExtensionExists( ["python.exe", "assignment5.docx",
"assignment4.py", "shortcuts.docx", "geographyhw1.txt"], "py")))
顺便说一句,除非这是一个学校练习,请帮自己一个忙,并使用os.path.splitext()
来拆分扩展,这里真的没有必要重新发明轮子,Python带有很多轮子。 splitext()
将包含扩展程序前面的句点,因此您可以传入".py"
,但这通常可以使代码更清晰。
答案 1 :(得分:0)
你的for循环不执行任何操作:它会在列表fileExtensionExists
的第一个元素退出后,在第一个符号return
退出时返回
答案 2 :(得分:0)
首先,您需要在fileName
函数调用中提供parseExtension
。但是你还有一些问题。我想你想要的是这个。
def parseExtension(filename):
periodPosition = filename.find(".")
extension = (filename[periodPosition + 1:])
return extension
def fileExtensionExists(fileList, fileExtension):
for fileName in fileList:
if parseExtension(fileName) == fileExtension:
return True
return False
my_files = ["python.exe", "assignment5.docx", "assignment4.py",
"shortcuts.docx", "geographyhw1.txt"]
print(fileExtensionExists(my_files, "py"))