目前我正在从事一个项目,该项目的目标是在Python中创建watchfolder来执行某些操作。我读过关于watchdog库的文章,现在我正在尝试实现它。我的代码基于:Using watchdog of python to monitoring afp shared folder from linux
下面是必须对其执行操作的文件夹和子文件夹的结构。 https://imgur.com/mYhZydf
主文件夹watchfolder
包含递归观察到的子文件夹subfolX
。
开始时,只有包含空子文件夹的watchfolder。
我有另一个程序可以将特殊目录VIDX
移动到特定的子文件夹。
现在,完成了三个操作:
settings_extractor()
被执行。此函数用于打开文件adi.xml
,并在此基础上创建新文件settings.txt
。
mediainfo_extractor()
被执行。此函数返回有关VIDX.mp4
文件的特定信息。然后使用此信息创建folderName
变量。
基于folderName
将包含内容(VIDX.mp4、settings.txt、adi.xml)的整个文件夹VIDX
基于folderName
变量移动到另一个目录
将文件夹VID2移动到subfol3
的示例性过程如下:
https://imgur.com/BOaxHzX
然而,我遇到了一些问题。我不知道该如何正确设置操作顺序,以获得理想的效果。我不能完全理解“递归性”,因为程序正在执行一些清除局部变量的操作。当我运行程序时,它首先分析*.mp4
文件,创建folderName
变量,然而新事件触发内存清除,然后脚本不知道应该将文件移动到哪里
基本watchfolder代码与第一个链接中的代码相同,但pastebin上有以下版本: https://pastebin.com/Qh4mvgU1
以下是我负责操作的代码:
if(event.event_type == 'created'):
filename = path_leaf(event.src_path)
extension = os.path.splitext(event.src_path)[-1].lower()
if filename == "adi.xml":
adi_to_settings.settings_extractor(event.src_path)
shouldMove = True
if extension == ".mp4":
#<PART OF CODE RESPONSIBLE FOR CREATING folderName>
folderName = folderName.upper()
folderThatWillBeMoved = str(Path(event.src_path).parent)
if(len(os.listdir(r"C:\Users\user\WFS\watchfolder\subfol3\{}".format("folderThatWilLBeMoved))) >= 3 & shouldMove == True):
moveAllDirsAndFilesinDir(r'C:\Users\user\WFS\watchfolder\{}'.format("folderThatWillBeMoved"),r'C:\Users\user\WFS\tempfolder\{}'.format(folderName))
shouldMove = False
总而言之,我面临的主要问题是控制首先对文件执行哪个操作,或者更好地控制首先分析哪个文件。 我尽量简明扼要地解释一切。我非常感谢任何能让我更接近解决方案的提示,我应该如何修改代码以干净的方式执行操作
目前没有回答
相关问题 更多 >
编程相关推荐