gpt4 book ai didi

python - 如何使用 python 3.x 在文件夹中查找新的/更改的/删除的文件

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:49 27 4
gpt4 key购买 nike

我有一个工具,可以每天晚上 11 点将新文件添加到 Unix 服务器文件夹中。我想编写一个 python 脚本,在晚上 11.30 启动,它会查找此文件夹中的新文件、删除的文件和修改的文件。这些文件具有唯一名称“123456_0.csv、123456_1.csv”。由于脚本将手动启动,我不想使用繁忙等待模式。我只想使用 python 库。

谢谢。

在下面几行中我的代码(我是Python新手):

def F_CreateArchive(Time_stamp, Added_Filename, Aux_Filename, Field_Names, File_Extension):
if not os.path.exists(Added_Filename):
with open(Added_Filename, 'w', newline='') as arch:
archive_write = csv.DictWriter(arch, fieldnames=Field_Names, delimiter=';')
archive_write.writeheader()
folder_files = glob.glob(File_Extension)
for each_folder_file in folder_files:
md5file = hashlib.md5(open(each_folder_file,'rb').read()).hexdigest()
archive_write.writerow({'TIMESTAMP': Time_stamp, 'FILENAME': each_folder_file, 'ACTION': 'added', 'MD5': md5file})
return 0
def F_CheckAdded(Time_stamp, Added_Filename, Aux_Filename, Field_Names, File_Extension):
dict_added_archive = {}
dict_folder_file = {}
folder_files = glob.glob(file_extension)
for each_file in folder_files:
with open(each_file, 'rb') as file:
dict_folder_file[each_file] = hashlib.md5(file.read()).hexdigest()

with open(Added_Filename, 'r') as addfile:
added_read = csv.DictReader(addfile, delimiter=";")
for row in added_read:
if(row['FILENAME'] != ''):
dict_added_archive[row['FILENAME']] = row['MD5']
addfile.seek(0)

print(dict_folder_file)
print(dict_added_archive)

with open(Aux_Filename, 'w', newline='') as aux, open(Added_Filename, 'r') as addfile:
added_read = csv.DictReader(addfile, delimiter=";")
aux_write = csv.DictWriter(aux, fieldnames=Field_Names, delimiter=';')
aux_write.writeheader()
for filename_folder, md5_folder in dict_folder_file.items():
if filename_folder in dict_added_archive and md5_folder == dict_added_archive[filename_folder]:
print('The file %s hasn\'t been changed.' %filename_folder)
for row in added_read:
if(row['FILENAME'] == filename_folder):
aux_write.writerow(row)
addfile.seek(0)

elif filename_folder in dict_added_archive and md5_folder != dict_added_archive[filename_folder]:
print('The file %s has been modified.' %filename_folder)
aux_write.writerow({'TIMESTAMP': Time_stamp, 'FILENAME': filename_folder, 'ACTION': 'added', 'MD5': md5_folder})

elif filename_folder not in dict_added_archive:
print('The file %s is new.' %filename_folder)
aux_write.writerow({'TIMESTAMP': Time_stamp, 'FILENAME': filename_folder, 'ACTION': 'added', 'MD5': md5_folder})

for filename_archive, md5_archive in dict_added_archive.items():
if filename_archive not in dict_folder_file:
print('The file %s has been removed.' %filename_folder)
aux_write.writerow({'TIMESTAMP': Time_stamp, 'FILENAME': filename_archive, 'ACTION': 'removed', 'MD5': md5_archive})

最佳答案

  • 找到已删除的文件?

    • 您可以将文件名跟踪为 pickle或者在文本文件中并与当前可用文件进行比较
  • 查找新文件?

    • 同上
    • 检查os.stat (路径):st_ctime,在所有文件上
  • 查找修改过的文件?
    • 检查os.stat (路径):st_mtime,在所有文件上

关于python - 如何使用 python 3.x 在文件夹中查找新的/更改的/删除的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42162059/

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