我必须检查一下while循环。我发现以下代码显示了没有while循环的文件。
for file in glob.glob("*.txt"):
print(file)
但是如果我使用以下代码,它将无法在while循环中工作
a = os.listdir(my_path)
#print(a)
for file in glob.glob("*.txt"):
print(file)
我正在尝试使用OS模块在python中编写观察者类型
答案 0 :(得分:4)
while True:
f = os.listdir(path)
if len(f) > 0:
for i in os.listdir(path):
if i.endswith('.txt'):
continue
else:
dosomething()
time.sleep(5) #so loop checks files every 5 sec
这样,您只使用os模块,不需要glob。
答案 1 :(得分:2)
os.listdir
来获取文件夹中的所有文件len
获取文件总数sum
和str.endswith
列出理解以获取以“ .txt”结尾的计数文件演示:
import os
a = os.listdir(my_path)
if len(a) == sum(1 for i in a if i.endswith(".txt")):
print("All Text")
答案 2 :(得分:2)
import os
dr = os.listdir(my_path)
if len(dr) == len(filename for filename, file_extension in a if file_extension == '.txt')):
#do stuff
pass
答案 3 :(得分:2)
据我所知,您想要创建一个观察程序服务以在创建新文件时为您提供服务。
`
import glob
files = glob.glob("*.txt") # Check first time all the files
while True: # till you exit
_old_files_count = len(files) # Get count of files
files = glob.glob("*.txt")
if len(files) > _old_files_count: # If new file is created.
print(*files[_old_files_count:], sep="\n") # Printing all new files in new line.
`
它将为您提供在该特定目录中创建的新文件。 此外,通过一些调整,您还可以获取已删除的文件。 希望能帮助到你。 要使用os,只需在下面使用而不是glob行。
import os
files = [file for file in os.listdir() if file.endswith("*.txt")]