小编Mat*_*kel的帖子

将整数格式化为带前导零的字符串的最佳方法?

我需要将前导零添加到整数以生成具有已定义数字位数的字符串($ cnt).将这个简单函数从PHP转换为Python的最佳方法是什么:

function add_nulls($int, $cnt=2) {
    $int = intval($int);
    for($i=0; $i<($cnt-strlen($int)); $i++)
        $nulls .= '0';
    return $nulls.$int;
}
Run Code Online (Sandbox Code Playgroud)

有没有可以做到这一点的功能?

python string-formatting

270
推荐指数
7
解决办法
35万
查看次数

48
推荐指数
7
解决办法
4万
查看次数

将参数传递给__enter__

只需从本文中了解语句即可

问题是,我可以通过论证__enter__吗?

我有这样的代码:

class clippy_runner:
    def __enter__(self):
        self.engine = ExcelConnection(filename = "clippytest\Test.xlsx")
        self.db = SQLConnection(param_dict = DATASOURCES[STAGE_RELATIONAL])

        self.engine.connect()
        self.db.connect()

        return self
Run Code Online (Sandbox Code Playgroud)

我想将filename和param_dict作为参数传递给__enter__.那可能吗?

python with-statement

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

Android CI使用Bitbucket管道和Docker

我正在尝试在Android的Bitbucket管道中设置持续集成(CI).

我使用Android Studio 2.1.1创建了一个示例空白活动.

使用Pipelines我正在使用uber/android-build-environment Docker容器,它可以很好地创建环境.这是我的bitbucket-pipelines.yml

image: uber/android-build-environment:latest

pipelines:
  default:
    - step:
        script:
          - echo y | android update sdk --filter "extra-android-m2repository" --no-ui -a # Grab the Android Support Repo which isn't included in the container
          - ./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)

由于uber/android-build-environment期望像这样运行,因此需要进行一些更改:

docker run -i -v $PWD:/project -t uber/android-build-environment /bin/bash /project/ci/build.sh
Run Code Online (Sandbox Code Playgroud)

例如,源不会复制到卷/project,而是管道将Bitbucket仓库的内容复制到容器的工作目录:

/opt/atlassian/bitbucketci/agent/build
Run Code Online (Sandbox Code Playgroud)

./gradlew assembleDebug运行出现以下错误:

...

FAILURE: Build failed with an exception.

* What went wrong:
Could not create service of type …
Run Code Online (Sandbox Code Playgroud)

continuous-integration android bitbucket docker bitbucket-pipelines

24
推荐指数
1
解决办法
5992
查看次数

Django登录Heroku

我知道这个问题已被问过几次了,但我无法让它发挥作用.我已经花了半天时间尝试了几十种组合,现在再次尝试它仍然无法正常工作.

在我的代码中,我记录了几个部分,比如在try-except中或从管理命令中记录一些信息.我正在做非常正常的事情,这是在几个本地安装和一些Nginx服务器上工作.

像这样的python文件:

import logging
logger = logging.getLogger(__name__)
logger.info('some important infos')
Run Code Online (Sandbox Code Playgroud)

使用以下最小的settings.py(我试过没有流指示,没有指定记录器,使用命名记录器,几乎所有可能的组合,我也尝试了更复杂的组合)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'INFO',
        },
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后还简单地从shell测试 heroku run python

import logging
level = logging.INFO
handler = logging.StreamHandler()
handler.setLevel(level)
handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
logger = logging.getLogger('info')
logger.addHandler(handler)
logger.setLevel(level) #even if not required...
logger.info('logging test')
Run Code Online (Sandbox Code Playgroud)

最后一个可能在控制台中显示为"print"语句,但既不是在这里也不是从命令或服务器,没有任何东西永远不会出现在heroku logs …

python django logging heroku

22
推荐指数
3
解决办法
1万
查看次数

python以什么顺序显示字典键?

>>> D = {'a': 1, 'b': 2, 'c': 3}
>>> D
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

我只是在Python shell中做了这个,我只是想知道为什么键'c'会在键'b'之后?

python

18
推荐指数
3
解决办法
1万
查看次数

如何在Python中添加日期时间值的秒数?

我尝试修改第二个属性,但没有用.

基本上我想做:

datetime.now().second += 3
Run Code Online (Sandbox Code Playgroud)

python

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

使用JavaScript获取和设置单个cookie值的"最佳"方法是什么?

我想在每次引用页面时递增cookie值,即使页面是从缓存加载的.实现这一目标的"最佳"或最简洁的方法是什么?

javascript cookies

16
推荐指数
2
解决办法
2万
查看次数

在Python中迭代给定类的对象实例

给定一个保持其对象注册表的类:

class Person(object):
   __registry = []

   def __init__(self, name):
       self.__registry.append(self)
       self.name = name
Run Code Online (Sandbox Code Playgroud)

如何使以下代码工作(不使用Person .__注册表):

for personobject in Person:
    print personobject
Run Code Online (Sandbox Code Playgroud)

在研究的过程中,我发现了一个人可以选择__metaclass__一种__getitem__方法的暗示.任何想法如何看起来像?

python oop

16
推荐指数
2
解决办法
2万
查看次数

为什么我使用realloc()获得双重自由错误?

我试图在C中编写一个字符串替换函数,它在a上工作char *,已经使用了malloc().它有点不同,它会找到并替换字符串,而不是起始字符串中的字符.

如果搜索和替换字符串的长度相同(或者替换字符串比搜索字符串短),这很简单,因为我有足够的空间分配.如果我尝试使用realloc(),我会收到一个错误,告诉我我正在做双重免费 - 我不知道我是怎么回事,因为我只是在使用realloc().

也许一点点代码会有所帮助:

void strrep(char *input, char *search, char *replace) {
    int searchLen = strlen(search);
    int replaceLen = strlen(replace);
    int delta = replaceLen - searchLen;
    char *find = input;

    while (find = strstr(find, search)) {

        if (delta > 0) {
            realloc(input, strlen(input) + delta);
            find = strstr(input, search);            
        }

        memmove(find + replaceLen, find + searchLen, strlen(input) - (find - input));
        memmove(find, replace, replaceLen);
    }
}
Run Code Online (Sandbox Code Playgroud)

该程序有效,直到我尝试realloc()在被替换的字符串将比初始字符串长的实例中.(它仍然有点工作,它只是吐出错误以及结果).

如果有帮助,调用代码如下所示: …

c malloc

14
推荐指数
4
解决办法
6580
查看次数