从脚本运行Python scour SVG优化器而不是CLI

时间:2018-06-16 21:02:09

标签: python-3.x matplotlib svg command-line-interface

Python的

scour可以很好地减少我使用matplotlib生成的SVG地图的大小。

但是,该文档仅描述了如何从CLI运行单个文件,标准:

scour -i input.svg -o output.svg

从Python脚本/我的Jupyter笔记本中运行它(在批处理模式下)的最佳方法是什么?

我成功地“创建”了下面的工作代码并优化了500个SVG让我满意。但我只是从testscour.py的位中复制了那些代码,我对此缺乏了解......

    from scour.scour import makeWellFormed, parse_args, scourString, scourXmlFile, start, run
    maps= os.listdir('C:\\Hugo\\Sites\\maps\\')
    for m in maps[:]:
        if afbeelding[-4:]=='.svg':
            inputfile = open('C:\\Hugo\\Sites\\maps\\' + m, 'rb')
            outputfile = open('C:\\Hugo\\Sites\\allecijfers\\static\\images\\maps\\' + m, 'wb')
            start(options, inputfile, outputfile)

相关问题(试图学习):为了找到合适的可调用函数,分解像scour这样的模块的最佳方法是什么? (我不会在scour.py中找到函数start)或者我是否可以从上面的Python脚本调用CLI命令以便以批处理模式执行它?

2 个答案:

答案 0 :(得分:1)

我喜欢您的问题,因为它向我指出了testscour.py,非常感谢。

也就是说,代码导入首先要搜索, 然后从您的地图文件夹中创建一个列表; 然后逐个浏览列表,如果它是svg,则使用“开始”方法调用搜索。

所以工件是 start(options, inputfile, outputfile)

请注意,它需要一个打开的文件处理程序,通常使用“ with”。

玩得开心

答案 1 :(得分:1)

要以编程方式使用 Scour,请先使用 PIP 安装它。

DECLARE @firstone INT; DECLARE @secondone INT; SELECT @firstone = count(*) FROM dbo.PID_Components_PROCESS_LINES WHERE ISOGEN_LINE_PROGRESS_ = 'C'; SELECT @secondone = count(*) FROM dbo.PID_Components_PROCESS_LINES WHERE PROJECT_NUMBER_ = 'PJ001234'; SELECT @firstone / @secondone AS resultthing SELECT @firstone /CAST(@secondone AS DECIMAL (9,2))

然后将此添加到您的代码中(使用您喜欢的任何名称)。

pip install scour

使用 from scour.scour import start as scour, parse_args as scour_args, getInOut as scour_io def scour_svg(infilename,outfilename): options = scour_args() options.infilename = infilename options.outfilename = outfilename // Set options here or accept defaults. (input, output) = scour_io(options) scour(options, input, output) if __name__ == '__main__': infilename = 'C:\\Users\\...\\svg_in.svg' outfilename = 'C:\\Users\\...\\svg_scoured.svg' scour_svg(infilename,outfilename) print('The END') 函数读入 SVG 文件,对其进行搜索,然后将其写入文件。

可以按照上面提供的 scour_svginfilename 相同的方式在代码中调整选项。参考:-