【发布时间】:2021-11-24 22:03:51
【问题描述】:
我正在努力修复代码中的错误。变量 (fext) 仅适用于文件夹中的最后一个文件。因此,如果碰巧最后一个文件是“jpg”,那么我的代码将按计划继续。但是,如果偶然最后一个文件是“gpx”或“csv”,那么即使文件夹中有“jpg”文件,也会触发 Else 错误。
如果所有文件类型都在文件夹中,有人可以帮我改进我的代码吗?我对 Python 还是很陌生,一直坚持如何继续。
下面是我的代码:
import os, string
from os.path import isfile, join
file_path = input("Enter the folder link: ")
print("")
TF = False
path_it = (os.path.join(root, filename)
for root, _, filenames in os.walk(file_path)
for filename in filenames)
for path in path_it:
fext = os.path.splitext(os.path.basename(path))[1]
fname = os.path.splitext(os.path.basename(path))[0]
while True:
file_type = input("Enter file extention (e.g. txt, wav, jpg, gpx, pdf): ")
print(file_type)
if file_type in fext:
TF = True
break
else:
print("\n*** There is no '" + file_type + "' file extension in this folder, please try again.\n")
Other code...
谢谢
【问题讨论】:
-
你能检查一下你的代码吗:它的格式不正确(对于 os.walk 的 for 循环)并且 path_it 使用了在…之后定义的文件名
-
您的 for 循环在每次迭代时都会覆盖 fext 和 fname 变量,因此只有最后一个扩展类型会匹配。尝试列表理解
-
请修正代码的缩进。
-
感谢您的意见!格式已更正。
标签: python user-input file-extension os.path