gpt4 book ai didi

Python Grabbing 最近的文件在脚本运行后

转载 作者:行者123 更新时间:2023-12-03 16:58:40 24 4
gpt4 key购买 nike

我正在编写一个数据解析脚本,其中数据每小时刷新一次。我有脚本工作,它从第一次运行脚本时获取最近的文件。但是,如果在脚本当前运行时交付了更新,则它无法检测到新文件。当它在腻子中运行时这不是问题,但我正在 flask 中重新创建所有内容。

def getLatestFile():
import glob, os
list_of_files = glob.glob('./Source/data.parsed*.txt')
latest_file = max(list_of_files, key=os.path.getctime)
return latest_file

if __name__ == '__main__':
###Creates a Dictionary from the latest Data File
headers = None
content = {}
csvFile = getLatestFile()
modTime = os.path.getmtime(csvFile)
reader=csv.reader(open(csvFile), delimiter = '|') #opens File
print('Creating Dictionary from file ' + csvFile + '\nLast modified date - ' + str(datetime.datetime.fromtimestamp(modTime)))
for row in reader: # Writes data to dictionary
if reader.line_num == 1:
headers = row[1:] #grabs first row and creates headers
print(headers)
else:
content[row[0]] = dict(zip(headers, row[1:])) #creates dictionary
app.run(host=os.getenv('IP', '0.0.0.0'), port =int(os.getenv('PORT', 8080)), debug=True)

当我尝试使用下面的代码重新创建字典时,它只会从创建脚本时获取最新的文件
def updateDict():
headers = None
content = {}
csvFile = getLatestFile()
modTime = os.path.getmtime(csvFile)
for row in reader: # Writes data to dictionary
if reader.line_num == 1:
headers = row[1:] #grabs first row and creates headers
else:
content[row[0]] = dict(zip(headers, row[1:])) #creates dictionary

我试过 latest_file = max(list_of_files, key=os.path.getmtime)相反,但它仍然忽略掉到源目录中的新文件。

最佳答案

os.path.getctime()以奇怪的方式工作:

Return the system’s ctime which, on some systems (like Unix) is the time of the last metadata change, and, on others (like Windows), is the creation time for path.



所以最好检测哪个文件是最后创建的,但不能检测一个已经存在的文件是否被修改。

我建议更改您的 key 以计算创建时间和修改时间之间的最大值:
latest_file = max(list_of_files, key=lambda x : max(os.path.getmtime(x),os.path.getctime(x)))

关于Python Grabbing 最近的文件在脚本运行后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48643911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com