我有一个<Window x:Class="StackoverflowHelpWPF5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:[YOURLOCALNAMESPACEHERE]"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ControlTemplate TargetType="Button" x:Key="beforeClicking">
<Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black">
<ContentPresenter/>
</Border>
</ControlTemplate>
<ControlTemplate TargetType="Button" x:Key="afterClicking">
<Border Name="border" Background="Transparent" BorderThickness="10" BorderBrush="Black">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Window.Resources>
...
<Button Template="{StaticResource beforeClicking}" >
<i:Interaction.Behaviors>
<local:ChangeTemplateBehavior ControlTemplate1="{StaticResource afterClicking}" ControlTemplate2="{StaticResource beforeClicking}"></local:ChangeTemplateBehavior>
</i:Interaction.Behaviors>
</Button>
目录,其中包含一个"Process"
脚本,可以进行一些图像处理并上传到s3。
脚本扫描process.py
目录中的子目录并处理其中的文件。
我的问题是我每隔几个小时就会通过launchd调用process.py,但我遇到了一个问题,脚本运行时文件(多个gig子目录)被放入“处理“目录。
你如何处理这样的事情?
答案 0 :(得分:0)
我选择一些原子文件系统操作作为所有权标志。
我可能会使用os.rename()
。在复制文件时,有问题的子目录将命名为dir/subdir.DONTPROCESSME
。当复制所有数据并且子目录处于一致状态时,拷入脚本将:
os.rename('dir/subdir.DONTPROCESSME', 'dir/subdir.DOPROCESSME')
同样,launchd启动的过程将具有如下代码:
for subdir in os.listdir('dir'):
if subdir.endswith('.DONTPROCESSME'): continue