英文:
Need to see if the last file is the same as the previous file
问题
我正在使用 yolov5
来检测人员,并且我正在使用以下代码来读取包含人数的文件并显示它:
import os
directory_path = r'C:\Users\MRTS\yolov5\runs\detect\exp2\labels'
os.chdir(directory_path)
most_recent_file = None
most_recent_time = 0
while True:
for entry in os.scandir(directory_path):
if entry.is_file():
# 获取文件的修改时间使用 entry.stat().st_mtime_ns
mod_time = entry.stat().st_mtime_ns
if mod_time > most_recent_time:
# 更新最新文件和其修改时间
most_recent_file = r'{}'.format(entry.name)
most_recent_time = mod_time
# 打开文件以进行读取
with open(most_recent_file, 'r') as f:
# 将文件内容读入变量
lines = len(f.readlines())
print('总人数:', lines)
time.sleep(3)
我的问题是,如果它没有检测到人员,它将不会创建一个文件,因此这段代码将继续读取上一个文件。我想要查看最新的文件是否仍然与之前的文件相同,在这种情况下,打印出没有人。基本上,如果没有新文件,就没有人,我想要打印出来。
英文:
I'm using yolov5
to detect people and I'm using the following code to read the files containing the number of people and display it:
import os
directory_path = r'C:\Users\MRTS\yolov5\runs\detect\exp2\labels'
os.chdir(directory_path)
most_recent_file = None
most_recent_time = 0
while True:
for entry in os.scandir(directory_path):
if entry.is_file():
# get the modification time of the file using entry.stat().st_mtime_ns
mod_time = entry.stat().st_mtime_ns
if mod_time > most_recent_time:
# update the most recent file and its modification time
most_recent_file = r'{}'.format(entry.name)
most_recent_time = mod_time
# open the file for reading
with open(most_recent_file, 'r') as f:
# read file contents into a variable
lines = len(f.readlines())
print('Total Number of People:', lines)
time.sleep(3)
My problem is that if it doesn't detects people, it will not create a file, so this code would just keep reading the last one. I want to see if the most recent file is still the same as the previous and in that case, print that there are 0 people. Basically, if there are no new files, there are no people and I want to print that.
答案1
得分: 1
你可以创建一个变量来跟踪most_recent_file
的路径,只有在新的most_recent_file
与它不同的情况下才打印:
import os
import time
directory_path = "."
recently_parsed = None
while True:
most_recent_time, most_recent_file = max(
(
(entry.stat().st_mtime_ns, entry.name)
for entry in os.scandir(directory_path)
if entry.is_file()
)
)
with open(most_recent_file, "r") as f:
if recently_parsed == most_recent_file:
print("没有新的人员")
else:
recently_parsed = most_recent_file
lines = len(f.readlines())
print("总人数:", lines)
time.sleep(3)
请注意,我还将most_recent_file
的确定替换为了max
调用。
英文:
You can create a variable to keep track of the path of the most_recent_file
, and only print if the new most_recent_file
is different from it:
import os
import time
directory_path = "."
recently_parsed = None
while True:
most_recent_time, most_recent_file = max(
(
(entry.stat().st_mtime_ns, entry.name)
for entry in os.scandir(directory_path)
if entry.is_file()
)
)
with open(most_recent_file, "r") as f:
if recently_parsed == most_recent_file:
print("No new people")
else:
recently_parsed = most_recent_file
lines = len(f.readlines())
print("Total Number of People:", lines)
time.sleep(3)
Note that I've also replaced the most_recent_file
determination with a max
call.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论