我有一个Python脚本,它检查拾取目录并处理它找到的任何文件,然后删除它们.
如何确保不会删除仍然由删除该目录中的文件的进程写入的文件?
我的测试用例非常简单.我将300MB的文件复制粘贴到拾取目录中,并且脚本经常会抓取仍在写入的文件.它仅对部分文件进行操作,然后将其删除.这会触发操作系统中的文件操作错误,因为它写入的文件消失了.
在打开/处理/删除它之前,我尝试获取文件锁(使用FileLock模块).但这没有帮助.
我已经考虑过检查文件上的修改时间,以避免在X秒之内发生任何事情.但这似乎很笨拙.
我的测试是在OSX上,但我正在尝试找到一个适用于主要平台的解决方案.
我在这里看到一个类似的问题(如何检查文件是否仍在写入?),但没有明确的解决方案.
谢谢
所以我使用相同的批处理脚本构建多个客户端.如果在构建一个错误时出现错误,则该过程将停止并继续下一个过程.因为屏幕上有很多输出而我正在做其他事情,大部分时间我都想念有一个构建错误.
如果出现错误,有没有办法停止执行以下任务,并显示弹出消息以引起我的注意?或者至少停止执行所以当我回到命令窗口时,我可以看到出现故障?
@echo off
if "%1"=="?" GOTO HELP
if NOT "%1"=="" set rev=%1
if NOT "%2"=="" set version=%2
@echo on
rem build one
call perl buildClient.pl -brandName="myBrand" -group="group1"
rem build two
call perl buildClient.pl -brandName="myBrand" -group="group2"
rem build three
call perl buildClient.pl -brandName="myBrand" -group="group3"
rem build four
call perl buildClient.pl -brandName="myBrand" -group="group4"
@echo off
goto EXIT
:HELP
cls
echo.
echo.
echo usage: buildbrand.bat [revision] [version] [group]
echo.
echo ? = this help screen
echo.
echo revision = build version
echo …Run Code Online (Sandbox Code Playgroud) awk 逐行处理文件。假设每一行操作不依赖于其他行,有没有办法让 awk 一次并行处理多行?是否有任何其他文本处理工具可以自动利用并行性并更快地处理数据?
我知道Mongoid v3 +支持批量插入Model.collection.insert().但是,我不认为它支持批量更新,其中每个记录的属性不同(所以我认为update_all也不会).有没有办法进行批量更新/ upsert而不是单记录查找和更新?
这是一个简化的例子,我有2个模型:
class Product
...
has_and_belongs_to_many :lists
end
class List
...
has_and_belongs_to_many :products
end
Run Code Online (Sandbox Code Playgroud)
Product创建new时,我将其与一个或多个相关联Lists.但是,我还需要Product每天更新属性而不会丢失List参考信息(我确定验证Product不会运行).
一种方法,不使用批处理,是调用find_or_initialize_by上Product和更新的属性.但对10K-1M +记录这样做是非常耗时的.
使用批量插入的另一种方法是做Product.delete_all,然后Product.collection.insert(...),但是这会产生新的,product_ids并且List不再保持与之的关系.
在这个例子中有没有办法进行批量更新或upsert?
在过去,我使用BPXBATCH从JCL执行java类文件.我想在下面的链接中转向使用IBM推荐的自定义JVM启动程序. http://www.ibm.com/developerworks/systems/library/es-java-batchz.html
我写了一个hello world java程序并在大型机上编译并将其打包到jar中.
下面是一个使用BPXBATCH的JCL成员示例.
//LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD',
// CLASS=A,MSGCLASS=H,REGION=512M,NOTIFY=&SYSUID
//********************************************************************
//* Run Java under a UNIX System Service shell
//********************************************************************
//STEP2 EXEC PGM=BPXBATCH,
// PARM='SH java com.foo.bar.HelloWorld'
//STDIN DD DUMMY
//STDOUT DD PATH='/tmp/&SYSUID..bpxbatch.out',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHMODE=SIRWXU
//STDERR DD PATH='/tmp/&SYSUID..bpxbatch.err',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHMODE=SIRWXU
//STDENV DD *
CLASSPATH=/u/myuid
//*********************************************************************
//* Copy HFS output files to SYSOUT, since BPXBATCH can only write
//* STDOUT and STDERR to HFS files.
//*********************************************************************
//STEP3 EXEC PGM=IKJEFT01,DYNAMNBR=300,COND=EVEN
//SYSTSPRT DD SYSOUT=*
//HFSOUT DD …Run Code Online (Sandbox Code Playgroud) 我需要为我的数据创建一个生成器,以传递给我的RNN训练函数.我有一份患者样本列表,其中每个样本都是三维长度为n i的时间序列(烦人地变化),我想创建批量数据,其中批量中的每个样本只属于一个患者但是每批可包含多个患者样本.这样做可以最大限度地增加我可以训练的样本数量而不会产生任何后果,因为我的RNN不是有状态的.起初我有以下功能
def dataIterator(rawDataList, config):
batchSize, nSteps = config.batchSize, config.nSteps
for rawData in rawDataList:
dataLen, dataWidth = rawData.shape
batchLen = dataLen // batchSize
data = np.zeros([batchSize, batchLen, dataWidth], dtype=np.float32)
for i in xrange(batchSize):
data[i] = rawData[batchLen*i:batchLen*(i+1), :]
epochSize = (batchLen - 1) // nSteps
if epochSize == 0:
raise ValueError('epoch_size == 0')
for i in xrange(epochSize):
x = data[:, i*nSteps:(i+1)*nSteps, :]
y = data[:, i*nSteps+1:(i+1)*nSteps+1, :]
yield (x, y)
Run Code Online (Sandbox Code Playgroud)
然而,这会修剪每个患者样本以适合批量大小.所以我想要创造所有可能批次的东西,包括最后的小号.然而,我对发电机的不熟悉让我非常困惑.到目前为止,我已经解决了它将不得不使用modulo aritmetic,但确切地说我不确定,所以我只是到了这一步:
def dataIterator(data, batchSize=batchSize, nSteps=nSteps, nDimensions=3): …Run Code Online (Sandbox Code Playgroud) 假设这X是numpy.ndarray一个包含一组彩色图像的张量。例如,X的形状是(100, 3, 32, 32); 即,我们有 100 张 32x32 rgb 图像(例如由 CIFAR 数据集提供的图像)。
我想旋转图像X,我发现这可以使用scipy 的 scipy.ndimage.interpolation.rotate函数来完成。
但是,我每次只能对单个图像和单个颜色通道正确执行此操作,而我想一次对所有图像和所有颜色通道应用该功能。
到目前为止,我尝试并有效的方法如下:
import scipy.ndimage.interpolation
image = X[0,0,:,:]
rotated_image = scipy.ndimage.interpolation.rotate(input=image, angle=45, reshape=False)
Run Code Online (Sandbox Code Playgroud)
但我想做的事,看起来像这样
X_rot = scipy.ndimage.interpolation.rotate(input=X, angle=45, reshape=False)
Run Code Online (Sandbox Code Playgroud)
不起作用。
有没有办法申请scipy.ndimage.interpolation.rotate像numpy.ndarray张量这样的一批图像X?
无论如何,有没有更好的方法来有效地旋转一批图像(存储在 a 中numpy.ndarray)?
我有 adobe illustrator 工具,我需要将大量 .ai 文件转换为 svg 文件,而无需在 adobe illustrator 中打开它。只需通过批量转换或命令行 (CLI) 执行即可。
我有 inkscape 工具,它实际上也有一个命令行
转换 test.ai test.svg 但 inkscape 没有给出预期的输出格式
对于插画家,我尝试过以下命令
“C:\Program Files\Adobe\Adobe Illustrator CS6(64 位)\Support Files\Contents\Windows\Illustrator.exe” “C:\Program Files\Adobe\Adobe Illustrator CC 2018\Presets\en_GB\Scripts\SaveDocsAsSVG。 jsx"
它说没有打开的文档!警报
这是我一直在使用的脚本
// 主要代码 [脚本执行从这里开始]
try {
if (app.documents.length > 0 ) {
// Get the folder to save the files into
var destFolder = null;
destFolder = Folder.selectDialog( 'Select folder for SVG files.', '~' );
if (destFolder != null) {
var options, …Run Code Online (Sandbox Code Playgroud) adobe command adobe-illustrator command-line-interface batch-processing
我正在为 13K pdf 文件做 for 循环,在其中读取、预处理文本、查找相似性并写入 txt。但是,当我运行 for 循环时,它给出了一个错误
Error in poppler_pdf_text(loadfile(pdf), opw, upw) : Not enough space
原因是什么?
memory_limit(),也不是这个问题。Thumbs.db,但同样的问题再次出现。
folder_path <- "C: ...."
## get vector with all pdf names
pdf_folder <- list.files(folder.path)
## for loop over all pdf documents
for(s in 1:length(pdf_folder)){
## choose one pdf document from vector of strings
pdf_document_name <- pdf_folder[s]
## read pdf_document pdf into data.frame
pdf <- read_pdf(paste0(folder_path,"/",pdf_document_name))
print(s)
rm(pdf)
} ## end of for …Run Code Online (Sandbox Code Playgroud) 我的团队维护一个应用程序(用 Java 编写),用于处理长时间运行的批处理作业。这些作业需要按定义的顺序运行。因此,应用程序在预定义的端口上启动套接字服务器以接受作业执行请求。它使套接字保持打开状态,直到作业完成(成功或失败)。这样,作业调度程序就知道一个作业何时结束,并且在成功完成该作业后,它会按预定义的顺序触发下一个作业。如果作业失败,调度程序会发出警报。
这是我们十多年来一直采用的设置。我们有一些作业需要运行几分钟,而另一些则需要几个小时(取决于数量)才能完成。该设置工作正常,没有任何问题。
现在,我们需要将此应用程序移至容器(RedHat OpenShift Container Platform),并且现有的基础设施策略仅允许公开默认的 HTTPS 端口。调度程序位于 OCP 外部,无法访问默认 HTTPS 端口以外的任何端口。
理论上,我们可以使用 HTTPS,将客户端超时设置为非常长的持续时间,并尝试模仿 TCP 套接字的当前设置。但是,由于 HTTP 协议是为服务短期请求而设计的,因此这种设置足够可靠吗?