我正在寻找Python的技术或模板系统,以便将输出格式化为简单文本.我需要的是它能够遍历多个列表或dicts.如果我能够将模板定义到单独的文件(如output.templ)而不是将其硬编码到源代码中,那将是很好的.
作为我想要实现的简单示例,我们有变量title,subtitle和list
title = 'foo'
subtitle = 'bar'
list = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
Run Code Online (Sandbox Code Playgroud)
并运行模板,输出将如下所示:
Foo
Bar
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
Run Code Online (Sandbox Code Playgroud)
这该怎么做?谢谢.
我想调整(仅在必要时)将图像调整为800x600的最大分辨率.因此,假设我们有分辨率为2000x1600的图像,它将调整为750x600,但如果我有一张分辨率为400x300的图像,它将保持原样.换句话说,我需要ImageMagick来调整图像大小而不进行放大.我怎样才能做到这一点?
convert -resize 800x600 input output 缩小规模,但也高档.
我正在编写一个小脚本,它将在主线程中创建存档,并且在每个存档完成后,将通过调用函数创建一个新线程,该函数将负责上传这些存档.我希望在后台完成上传的原因是,在上载以前的档案时可以创建另一个档案.
我遇到的问题是在脚本的最后.也就是说,主线程不会等待所有上传线程在退出之前完成.查看以下简化脚本(我删除/更改了与问题无关的代码部分)
function func {
for files in /home/somewhere/
do
echo "Uploading $1" &
done
wait
}
find /home/some/path -type f | while read filename ; do
echo "Creating archive of $filename"
func $somevariable &
done
wait
Run Code Online (Sandbox Code Playgroud)
在创建最后一个存档之前,一切都很好地执行,然后脚本在所有func线程完成之前结束,留下许多文件未上传.
谢谢你的想法.
我写了大约50个类,用于连接和使用机械化和线程的网站.它们都同时工作,但它们并不相互依赖.所以这意味着1个类 - 1个网站 - 1个线程.它不是特别优雅的解决方案,特别是对于管理代码,因为很多代码在每个类中重复(但不足以使它成为一个类来传递参数,因为一些站点可能需要在方法中间对检索到的数据进行额外处理 - 像'登录' - 其他人可能不需要).正如我所说,它并不优雅 - 但它有效.毋庸置疑,我欢迎所有建议如何更好地编写这个,而不使用每个网站方法的1个类.添加每个类的附加功能或整体代码管理是一项艰巨的任务.
但是,我发现,每个线程占用大约8MB内存,因此使用50个正在运行的线程,我们正在考虑大约400MB的使用量.如果它在我的系统上运行我就不会有问题,但由于它在仅有1GB内存的VPS上运行,因此它开始出现问题.你能告诉我如何减少内存使用量,还是有其他方法同时使用多个站点?
我使用这个快速测试python程序来测试它是存储在我的应用程序的变量中的数据是使用内存还是其他东西.正如您在下面的代码中看到的,它只处理sleep()函数,但每个线程使用8MB内存.
from thread import start_new_thread
from time import sleep
def sleeper():
try:
while 1:
sleep(10000)
except:
if running: raise
def test():
global running
n = 0
running = True
try:
while 1:
start_new_thread(sleeper, ())
n += 1
if not (n % 50):
print n
except Exception, e:
running = False
print 'Exception raised:', e
print 'Biggest number of threads:', n
if __name__ == '__main__':
test()
Run Code Online (Sandbox Code Playgroud)
当我运行它时,输出是:
50
100 …Run Code Online (Sandbox Code Playgroud) 如何在 YAML 中断开长字符串(如长 url 或文件名/路径),而不会将换行符变成空格?
示例输入:
url: >
https://example.com/?what=Lorem
%20ipsum%20dolor
%20sit%20amet
Run Code Online (Sandbox Code Playgroud)
输出:
{
"url": "https://example.com/?what=Lorem %20ipsum%20dolor %20sit%20amet"
}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{
"url": "https://example.com/?what=Lorem%20ipsum%20dolor%20sit%20amet"
}
Run Code Online (Sandbox Code Playgroud) 现在这很尴尬.我正在编写快速脚本,我无法弄清楚为什么这个语句不起作用.
if [ $(pidof -x test.sh | wc -w) -eq 1 ]; then echo Passed; fi
Run Code Online (Sandbox Code Playgroud)
我也尝试使用back-ticks而不是$(),但它仍然不起作用.
你能看出它有什么问题吗?pidof -x test.sh | wc -w如果我在脚本中运行它,则返回1,所以我看不出为什么基本上if [ 1 -eq 1 ]不会通过的任何原因.
非常感谢!
什么是仅删除特定字符周围的空格的最佳方法.让我们说一个破折号 - Some- String- 12345- Here将成为Some-String-12345-Here.有点像,sed 's/\ -/-/g;s/-\ /-/g'但我相信一定有更好的方法.
谢谢!
bash ×2
python ×2
if-statement ×1
imagemagick ×1
line-breaks ×1
readability ×1
resize ×1
sed ×1
templates ×1
whitespace ×1
yaml ×1