我被赋予一项任务来检测路径中是否有文件,如果没有文件,请休眠并等待直到存在文件,否则执行命令。
这是我的代码
import os,time
path = 'C:\\Users\\test'
for dir, sub_dirs, files in os.walk(path):
while not files:
print("no files at this level")
time.sleep(1)
if files:
print("file detected")
即使我将文件放在路径中,它也会保持睡眠状态,它不会print file detected
,这怎么了?
答案 0 :(得分:3)
files
在while
循环中不会更改。您将不得不再次os.walk
。
import os,time
def file_exists(path):
for dir, sub_dirs, files in os.walk(path):
return files
path = r'C:\Users\test'
while True:
if file_exists(path):
print("file detected")
break
else:
print("no files at this level")
time.sleep(1)
在这里,我们有一个无限循环。如果找到文件,我们将调用break
并退出循环。
我的第一个答案使用了while
和for
的嵌套组合,而break
仅退出了内部循环,因此行不通。
答案 1 :(得分:0)
import os,time
def file_exists(path):
for dir, sub_dirs, files in os.walk(path):
return files
path = r'C:\Users\test'
while True:
if file_exists(path):
print("file detected")
break
else:
print("no files at this level")
time.sleep(1)