小编vaa*_*aab的帖子

如何在python中获取一个小的ascii文件的内容?

假设我们想要实现PHP的等价物file_get_content.

什么是最佳做法?(优雅可靠)

这是一些命题,它们是否正确?

使用with声明:

def file_get_contents(filename):
    with file(filename) as f:
        s = f.read()
    return s
Run Code Online (Sandbox Code Playgroud)

使用标准open()安全?

def file_get_contents(filename):
    return open(filename).read()
Run Code Online (Sandbox Code Playgroud)

在任一解决方案中文件描述符会发生什么

python file

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

python字符串插值

什么可能产生以下行为?

>>> print str(msg)
my message
>>> print unicode(msg)
my message
Run Code Online (Sandbox Code Playgroud)

但:

>>> print '%s' % msg
another message
Run Code Online (Sandbox Code Playgroud)

更多信息:

  • 我的msg对象是继承自的unicode.
  • 重写方法__str__/ __unicode__/ __repr__方法以返回字符串'my message'.
  • msg对象是用字符串初始化的'another message'.
  • 这是在python 2.5上运行的
  • msg测试之间的变量没有改变
  • 这实际上是真正的doctest,它真正给出了这些结果.

我想要一个与这个doctest匹配的解决方案,最小化(特别是在实际的继承周围):

>>> print '%s' % msg
my message
Run Code Online (Sandbox Code Playgroud)

谢谢你的所有建议.

我觉得这不会有更多帮助,但对于好奇的读者(和冒险的pythonist),这里是对象的实现:

class Message(zope.i18nmessageid.Message):

    def __repr__(self):
        return repr(zope.i18n.interpolate(self.default, self.mapping))

    def __str__(self):
        return zope.i18n.interpolate(self.default, self.mapping)

    def __unicode__(self):
        return zope.i18n.interpolate(self.default, self.mapping)
Run Code Online (Sandbox Code Playgroud)

这是我们创建对象msg的方式:

>>> msg = Message('another message', 'mydomain', …
Run Code Online (Sandbox Code Playgroud)

python string string-interpolation

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

如何强制Git NOT提示输入凭据

我正在使用git cloneBash脚本,它接受任何类型的Git位置(HTTPS,Git,SSH,文件系统......)并将克隆它.但是此脚本必须在不与任何用户交互的情况下工作 更确切地说,我希望这个脚本不要暂停凭据:如果位置需要凭据,并且git无法单独找到它们,我希望Git失败.

我的脚本假设如果你没有设置正确的方法来访问没有密码的这些位置,那么这不是它的问题.但是,解决方案应该让方法知道故障是什么(例如,输出错误"Authentication Failed").

我需要这种行为只是因为它是一个脚本,它是非交互式运行的(cron作业,VM构建......等等).我需要它失败,不要冻结我的脚本等待我无法提供它的信息(并且不要).

因此,在我目前的担忧中,我要求git clone失败而不是询问凭据.

我没有找到任何git clone强制不要求凭证的选项,最好是在验证错误时失败.

git credentials git-clone non-interactive

10
推荐指数
1
解决办法
2312
查看次数

使用提交以较小的更改更新docker镜像

我想利用docker镜像的缓存/分层来节省带宽,磁盘空间和花费的时间.

让我们说:

  • 我安装了一个web-app docker镜像,并将其部署到多个docker主机中.
  • docker镜像包含我的Web应用程序的源代码.
  • 我研究了代码,现在有了新版本的代码.

我应该如何在仅包含bugfix的最后一个图像上自动创建新的docker commit

我的目标是只需要下载小的bugfix diff来获取已下载前一个图像的docker主机的新图像.

这是我目前关于它的反思:

  • 我可能会以docker commit某种方式结束使用以保存图像中的更新.
  • 但是我如何访问图像内容?
  • 即便如此,如何在不使用与Web应用程序无关的各种工具(git和shell脚本)混乱原始docker镜像的情况下导入我的更改?
  • 我已经查看了与另一个负责更新它的docker共享代码的卷.但是卷不会得到承诺.

感谢您对如何实现这一目标的任何见解!

编辑:使用多个Dockerfile似乎是另一种方法,对于类似的问题,请访问http://jpetazzo.github.io/2013/12/01/docker-python-pip-requirements/.看来我需要动态生成dockerfiles.

git commit docker

10
推荐指数
1
解决办法
7172
查看次数

如何在没有数字字符的情况下使用Python regexp匹配字母字符?

使用Python模块re,如何获得等效的"\ w"(匹配字母数字字符)而不匹配数字字符(那些可以匹配"[0-9]")?

请注意,基本需要是匹配任何字符(包括所有unicode变体)而不使用数字字符(与"[0-9]"匹配).

作为最后一点,我真的需要一个正则表达式,因为它是更大的正则表达式的一部分.

下划线不应该匹配.

编辑:

  • 我没有考虑过强调状态,所以感谢关于这与"\ w"匹配的警告以及解决此问题的选定解决方案.

python regex

9
推荐指数
2
解决办法
5174
查看次数

setuptools,easy_install和自定义pypi服务器

我有一个自定义的pypi服务器运行,我想知道如何将所有对https://pypi.python.org/的引用从那里指向我的自定义服务器?

我希望能够覆盖用户呼叫pip/ easy_install包的情况(因此他们不必记得做-i或者-f)以及python setup.py install使用setuptools install_requires的人setup.py.

是否有一些全局配置或设置我可以做所有这些不同的方法来查看我的本地服务器?我想做一些网络代理类型的魔术来路由http://pypi.python.org/到我的自定义服务器将是一种方法,但不幸的是,这不是一个选项.

谢谢!

python pip setuptools easy-install pypi

8
推荐指数
1
解决办法
3722
查看次数

我们可以使用python变量来保存整个文件吗?

如果我们知道所有文件都将加载到内存中并且我们可以负担得起,那么在python变量中加载整个文件(可能是二进制文件)有什么缺点(如果有的话)或限制(如果有的话).如果这在技术上是可行的,那么应该避免这种情况,为什么?

关于文件大小问题,应该限制此解决方案的最大大小?为什么?

实际的加载代码可以是此stackoverflow条目中提出的代码.

示例代码是:

def file_get_contents(filename):
    with open(filename) as f:
        return f.read()

content = file_get_contents('/bin/kill')

... code manipulating 'content' ...
Run Code Online (Sandbox Code Playgroud)

[编辑]想到的代码操作(但可能不适用)是标准列表/字符串运算符(方括号,'+'符号)或一些字符串运算符('len','in'运算符,'count',' endswith'/'startswith','split','translation'...).

python variables file

7
推荐指数
2
解决办法
8782
查看次数

emacs控制台模式Org-mode strike-through未按预期显示

我正在使用org-mode.在文本周围使用"+",它在GUI中正确显示为删除文本(例如:+ striked-through +).

但是这在emacs控制台模式下不起作用,文本不会显示为striked-through:默认面没有区别.

我的术语知道如何显示透视效果,因为它通过此测试正确显示了标记文本:

echo -e "\e[9mtest\e[0m"
Run Code Online (Sandbox Code Playgroud)

所以这似乎是不使用SGR代码将文本呈现为删除线的emacs.

你知道告诉emacs在控制台中使用删除的方法吗?或者在我的结尾是不是设置了什么?

emacs terminal console org-mode strikethrough

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

如何在postgres中使用动态标识符连接表?

我有一个table包含两列的表名foreign_table_name,和foreign_key.

是否可以编写一个SELECT查询,该查询将JOIN包含此表的值以及在列中指定名称的表foreign_table_name

例如,如果我们知道所有可能的目标外表有一个name字段,我想知道我是否可以编写一些内容:

SELECT table.foo, table.bar, foreign_table.name 
FROM table
  JOIN $foreign_table AS foreign_table 
       ON (foreign_table.id = table.foreign_key
           $foreign_table = table.foreign_table);
Run Code Online (Sandbox Code Playgroud)

任何使用PlpgSQL的解决方案当然都是可以接受的.

这是一个简单的内容:

Table ``table``
------------------------------------------------
| foo | bar | foreign_table_name | foreign_key |
------------------------------------------------
|  A  |  1  | fruits             | 8           |
|  B  |  2  | vegetable          | 5           |
------------------------------------------------

Table ``fruit``
---------------
| id  | name  |
---------------
| 8   | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql plpgsql

5
推荐指数
1
解决办法
1506
查看次数

如何测试位置是否是btrfs子卷?

在bash脚本中,如果特定位置是btrfs子卷,我怎么能优雅地检查?

我不想知道给定的位置是否 btrfs文件系统(或子卷)中.我想知道给定的位置是否是子体积的头部.

理想情况下,解决方案可以用bash函数编写,所以我可以写:

if is_btrfs_subvolume $LOCATION; then
    # ... stuff ...
fi 
Run Code Online (Sandbox Code Playgroud)

"优雅"解决方案可读,代码小,资源消耗小.

bash btrfs

5
推荐指数
2
解决办法
1849
查看次数