小编Val*_*ian的帖子

Python中的字符串对象

我有一些数据对象,我想在其上实现一个字符串和等于深入的函数.

我实现了streq,虽然平等工作正常但我不能以同样的方式使str行为:

class Bean(object):

    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2

    def __str__(self):
        return str(self.__dict__)

    def __eq__(self, other):
        return self.__dict__ == other.__dict__
Run Code Online (Sandbox Code Playgroud)

当我跑:

t1 = Bean("bean 1", [Bean("bean 1.1", "same"), Bean("bean 1.2", 42)])
t2 = Bean("bean 1", [Bean("bean 1.1", "same"), Bean("bean 1.2", 42)])
t3 = Bean("bean 1", [Bean("bean 1.1", "different"), Bean("bean 1.2", 42)])

print(t1)
print(t2)
print(t3)
print(t1 == t2)
print(t1 == t3)
Run Code Online (Sandbox Code Playgroud)

我明白了:

{'attr2': [<__main__.Bean object at 0x7fc092030f28>, <__main__.Bean object at …
Run Code Online (Sandbox Code Playgroud)

python tostring python-3.x

13
推荐指数
1
解决办法
7万
查看次数

Ansible:如何获取当前库存位置

我有许多 Ansible 环境:

environments
  dev
    hosts
    group_vars/
  prod
    hosts
    group_vars/
Run Code Online (Sandbox Code Playgroud)

我需要创建一个“设置”剧本,它将复制 group_vars我使用的环境中的一些文件。

例如ansible-playbook -i environments/dev setup.yml --extra-vars="target=server1"

应该将文件从server1复制到environments/dev

目前我有任务:

 tasks:
 - name: Copy SSL certificate
   fetch:
      src: /path/to/file.crt
      dest: <inventoty_path>
      flat: yes
Run Code Online (Sandbox Code Playgroud)

但我不知道该用来做什么<inventory_path>

是否有设置当前库存绝对路径的变量?或者一种获取它的方法(无需为此设置额外的变量)?

ansible

4
推荐指数
1
解决办法
6615
查看次数

在迭代一个维度numpy数组时创建新数组

如何迭代n维的numpy数组并创建一个类似形状的新数组.

例如,输入:

import numpy as np

arr = np.array([[1,2,3],
                [4,5,6],
                [7,8,9],
                [0,0,0]])
alpha = 3.
median = np.median(arr)
Run Code Online (Sandbox Code Playgroud)

我想建立一个相同(4,3)的新数组,标志设置为1,用于随机条件.例如

flag = (arr[i,j] > median - alpha) or (arr[i,j] < median + alpha)
Run Code Online (Sandbox Code Playgroud)

我会用2语句来解决这个问题

flags = arr * 0 
for i in range(arr.shape[0]):
    for j in range(arr.shape[1]):
         flags[i,j] = (arr[i,j] > median - alpha) or (arr[i,j] < median + alpha)
Run Code Online (Sandbox Code Playgroud)

有没有办法以更简单,更有效的pythonic方式解决这个问题?理想情况下,该解决方案也适用于n维数组(1,2,... n维)

python arrays numpy

2
推荐指数
1
解决办法
90
查看次数

Django + 后台任务如何初始化

我有一个基本的 django 项目,用作(Condor)计算集群的前端接口来生成模拟。用户可以从 django 应用程序开始模拟(在 Condor 中)。与仿真相关的元数据和仿真状态保存在数据库中。

我需要添加一个新功能:(某些)模拟完成时发出通知。

因为我想要一个简单的解决方案(并且我已经使用后台任务),所以我正在考虑使用重复任务,以固定的时间间隔查询 Condor 有关任务的信息,更新数据库,并在必要时发送通知。

因此,如果我想每 10 分钟更新一次状态,我将得到如下内容:

@background(schedule=1)
def check_simulations(repeat=600):
    # lookup simulation statuses
    simulation_list = get_Simulations()
    for sim in simulations_list:
       if sim.status == Simulation.DONE:
            user.email_user('Simulation Complete', 'You have been notified')

def initialize():
     check_simulations()
Run Code Online (Sandbox Code Playgroud)

然而,这个任务(或者更好地说是initialize()方法)必须启动(调用一次)来创建和调度check_simulations()任务(这实际上会序列化调用并将其保存在数据库中);之后后台任务线程将读取它并执行并重新安排它(如果有错误)

我的问题:

  • 我应该把对initialize()方法的调用放在哪里,以便只运行一次?

例如,一个这样的地方可能是 urls.py,但这是一个极其丑陋的解决方案。有没有更好的办法 ?

  • 如何确保服务器重新启动不会创建和安排新任务(如果已经存在) 如果已安排任务(因此序列化任务位于后台任务表中)并且 Web 服务器重新启动,则可能会发生这种情况再次调用initialize()方法,因此创建并调度了一个新任务...

python django background-task

2
推荐指数
1
解决办法
3939
查看次数

无法打开文件来阅读PHP

我试图打开一个文件,但由于某种原因我甚至不能文件存在,甚至有777权限.代码如下:

$fileatt = "/opt/lampp/htdocs/a.pdf";
echo "File size is ".filesize($fileatt)."<br>";
if (file_exists($fileatt)) {
    echo "The file ".$fileatt." exist <br>";

    $file = fopen($fileatt, ‘rb’);
    if ($file == false) {
        echo "Could not open the file !";
    }
} else {
    echo "The file ".$fileatt." does NOT exist <br>";
}
Run Code Online (Sandbox Code Playgroud)

结果是:

File size is 1252121
The file /opt/lampp/htdocs/a.pdf exist 
Could not open the file !
Run Code Online (Sandbox Code Playgroud)

为什么我不能打开文件?我的错误在哪里?

谢谢

php

0
推荐指数
1
解决办法
2620
查看次数

标签 统计

python ×3

ansible ×1

arrays ×1

background-task ×1

django ×1

numpy ×1

php ×1

python-3.x ×1

tostring ×1