我试图找到一个包含一堆fits文件的特定文件夹。我当前的代码是
redpath = os.path.realpath('.')
thispath = os.path.realpath(redpath)
thispath = os.path.realpath(thispath+'/../../../..')
p = Path(thispath)
userinput = 'n'
while (userinput == 'n'):
text_file = next(p.glob('**/*.fits'))
print("Is this the correct file path?")
print(text_file)
SearchedFiles = []
SearchedFiles.append(text_file)
userinput = input("y or n")
if (userinput == 'n') :
while(text_file in SearchedFiles) :
p = Path(thispath)
text_file = next(p.glob('**/*.fits'))
因此,如果pathlib找到错误的文件拳头,则用户会这样说,并且假定代码随后将经过并再次搜索,直到找到另一个带有fits文件夹的文件。我陷入无限循环,因为它只沿着一条路径走。
答案 0 :(得分:0)
我不太确定我了解您要做什么。
但是,也难怪您会陷入循环:通过重新初始化p.glob()
,您每次都会重新开始!
p.glob()
实际上是一个生成器对象,这意味着它将自己跟踪进度。您可以按原样使用它:仅对其进行迭代。
例如,以下内容可能会更好地为您服务:
redpath = os.path.realpath('.')
thispath = os.path.realpath(redpath)
thispath = os.path.realpath(thispath+'/../../../..')
p = Path(thispath)
chosen = None
for text_file in p.glob('**/*.fits'):
print("Is this the correct file path?")
print(text_file)
userinput = input("y or n")
if userinput == 'y':
chosen = text_file
break
if chosen:
print ("You chose: " + str(chosen))