小编gue*_*tli的帖子

Python 2.7中的tempfile.TemporaryDirectory上下文管理器

有没有办法在Python 2.7的上下文管理器中创建临时目录?

with tempfile.TemporaryDirectory() as temp_dir:
    # modify files in this dir

# here the temporary diretory does not exist any more.
Run Code Online (Sandbox Code Playgroud)

python temp with-statement python-2.7

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

致命的:模糊的论证'起源':未知的修订或路径不在工作树中

我过去git diff origin经常使用.

在不同的环境中,它不起作用.我不知道为什么.

user@host> git diff origin
fatal: ambiguous argument 'origin': unknown revision or path 
       not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Run Code Online (Sandbox Code Playgroud)

状态:

user@host> git status
On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

遥控器:

user@host> git remote -v
origin  https://example.com/repos/djangotools (fetch)
origin  https://example.com/repos/djangotools (push)
Run Code Online (Sandbox Code Playgroud)

版:

user@host> git --version
git version 2.7.4
Run Code Online (Sandbox Code Playgroud)

用"git版本1.8.1.4" git diff origin工作.

顺便说一句,如果我使用"git diff origin/master",我会看到相同的错误信息

BTW2,我认为"/ master"是多余的.理所当然的默认设置是将本地分支与远程站点上的同一分支进行比较.

git

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

避免`logger = logging.getLogger(__ name __)`

我们设置日志记录就像django docs告诉我们的那样:

https://docs.djangoproject.com/en/2.1/topics/logging/#using-logging

# import the logging library
import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)

def my_view(request, arg1, arg):
    ...
    if bad_mojo:
        # Log an error message
        logger.error('Something went wrong!')
Run Code Online (Sandbox Code Playgroud)

我想在每个想要记录的Python文件中避免这一行:

logger = logging.getLogger(__name__)

我想要简单:

logging.error('Something went wrong!')

但我们希望保留一个功能:我们希望在日志记录输出中看到Python文件名.

到目前为止,我们使用以下格式:

'%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s'
Run Code Online (Sandbox Code Playgroud)

示例输出:

2016-01-11 12:12:31 myapp.foo +68: ERROR Something went wrong
Run Code Online (Sandbox Code Playgroud)

怎么避免logger = logging.getLogger(__name__)

python logging

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

使用args和选项编写自定义管理命令 - 解释所需的字段

在我的django应用程序中,我正在编写一个自定义管理命令,它将根据传递的args创建一个对象实例,并可以根据是否--save传递一个选项将其保存到数据库中.

我从django文档中获得了很多帮助.也得到了重要指针这里了解如何传递多个参数,并在这里了解如何有选择.

from optparse import make_option

class Command(BaseCommand):
  option_list = BaseCommand.option_list + (
    make_option('--delete',
        action='store_true',
        dest='delete',
        default=False,
        help='Delete poll instead of closing it'),
    )

  def handle(self, *args, **options):
    # ...
    if options['delete']:
        poll.delete()
    # ...
Run Code Online (Sandbox Code Playgroud)

但是我无法找到make_option中字段的详细说明.例如optparse.make_option列表

Instance attributes:
_short_opts : [string]
_long_opts : [string]

action : string
type : string
dest : string
default : any
nargs : int
const : any
choices : [string]
callback : function
callback_args : …
Run Code Online (Sandbox Code Playgroud)

django command

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

列出py.test可用的测试

我找不到列出我可以调用的测试的方法 py.test -k PATTERN

如何查看可用测试列表?

python unit-testing pytest

31
推荐指数
3
解决办法
7853
查看次数

pip:cert失败了,但卷曲有效

我们在客户端上安装了我们的根证书,并且https连接适用于curl.

但如果我们尝试使用pip它,它会失败:

Could not fetch URL https://installserver:40443/pypi/simple/pep8/:
There was a problem confirming the ssl certificate: 
<urlopen error [Errno 1] _ssl.c:499: error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed>
Run Code Online (Sandbox Code Playgroud)

证书在客户端.看到:

(foo_fm_qti)foo_fm_qti@vis-work:~$ curl -v https://installserver:40443/pypi/simple/pep8/
* About to connect() to installserver port 40443 (#0)
*   Trying 127.0.0.1... connected
* Connected to installserver (127.0.0.1) port 40443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Client hello (1):
* …
Run Code Online (Sandbox Code Playgroud)

python ssl curl pip

30
推荐指数
3
解决办法
4万
查看次数

git diff --&gt; 显示行中更改的部分

如果我执行,git diff我会看到整行呈红色。

有没有办法突出显示该行的变化?

我经常遇到只更改一行的差异。

突出显示线路的变化git diff对我来说会更方便。

git-diff-整行-红色

git 版本 2.32.0

这应该适用于命令行(无 GUI)。

git git-diff

29
推荐指数
2
解决办法
5813
查看次数

不要在Emacs完成窗口中显示不感兴趣的文件

当I:Cx Cf TAB时,如何防止Emacs向我显示我不感兴趣的所有文件(例如〜备份文件,.pyc文件或.orig文件)?

它在一个方面起作用:如果我知道我要打开的文件以foo开头,我键入foo TAB,那么迷你缓冲区正确地自动填充到foo.py. 它正确地忽略了foo~和foo.pyc,因为〜和.pyc都在completion-ignored-extensions中.如果我真的想通过输入我自己的所有字母,它也正确地让我打开被忽略的文件.

但是,如果我只是点击TAB以显示完成列表缓冲区,那么该列表包含在completion-ignored-extensions中具有扩展名的文件,这使得很难找到我正在寻找的内容.

很明显,忽略不感兴趣的文件的代码是有效的.如何获得完成列表缓冲区以尊重completion-ignored-extensions

(顺便说一下,我可以让dired表现得类似吗?)

emacs autocomplete dot-emacs find

25
推荐指数
2
解决办法
3069
查看次数

pip:如何安装git pull请求

我想在我的本地virtualenv中安装带有pip的git pull请求进行测试.我想直接从github安装它,而不创建本地git存储库.

python pip

24
推荐指数
2
解决办法
6546
查看次数

如何在没有MANIFEST.in文件的情况下包含package_data?

我怎么能包括package_datasdist没有MANIFEST.in文件?

我的setup.py看起来像这样:

import setuptools

setuptools.setup(
    name='foo',
    version='2015.3',
    license='commercial',
    packages=setuptools.find_packages(),

    package_data={'': ['foo/bar.txt']},
)
Run Code Online (Sandbox Code Playgroud)

版本:

user@host> python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
>>> import setuptools
>>> setuptools.version.__version__
'3.6'
Run Code Online (Sandbox Code Playgroud)

我只是不能被foo/bar.txt包括在内.

或者这篇博文仍然是真的吗? http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging-documentation-on--package_data-/

然而,在过去的一小时里,我了解到这些陈述介于"危险的误导"和"该死的谎言"之间.这是因为Python包的主要类型是源包,而创建源包的规范方法是使用setup.py sdist.但是,package_data中指定的数据不包含在源代码分发中 - 它们仅包含在binary(setup.py bdist)发行版和installs(setup.py install)中.

我怎么能包括package_datasdist没有MANIFEST.in文件?

python packaging manifest setuptools setup.py

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