小编Mit*_*tch的帖子

python中的属性文件(类似于Java属性)

给定以下格式(.properties.ini):

propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN
Run Code Online (Sandbox Code Playgroud)

对于Java,有一个Properties类,它提供了解析/与上述格式交互的功能.

python标准库(2.x)中有类似的东西吗?

如果没有,我还有其他选择吗?

python properties

124
推荐指数
8
解决办法
15万
查看次数

Ansible"当变量== true"时表现不尽如人意

我正在编写的剧本中有以下任务(结果列在<>中的调试语句旁边):

  - debug: var=nrpe_installed.stat.exists <true>
  - debug: var=force_install <true>
  - debug: var=plugins_installed.stat.exists <true>

  - name: Run the prep 
    include: prep.yml
    when: (nrpe_installed.stat.exists == false or plugins_installed.stat.exists == true or force_install == true)
    tags: ['prep']

  - debug: var=nrpe_installed.stat.exists <true>
  - debug: var=force_install <true>
  - debug: var=force_nrpe_install <false>

  - name: Install NRPE
    include: install-nrpe.yml
    when: (nrpe_installed.stat.exists == false or force_install == true or force_nrpe_install == true)
    tags: ['install_nrpe']
    vars:
      nrpe_url: 'http://url.goes.here'
      nrpe_md5: 3921ddc598312983f604541784b35a50
      nrpe_version: 2.15
      nrpe_artifact: nrpe-{{ nrpe_version }}.tar.gz
      nagios_ip: {{ nagios_ip …
Run Code Online (Sandbox Code Playgroud)

ansible ansible-playbook

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

如何在字符串中添加X个空格

可能是一个简单的问题,我以前找不到答案......

我正在格式化一个表(在文本中)看起来像这样:

Timestamp: Word                        Number
Run Code Online (Sandbox Code Playgroud)

在时间戳和Number的开头之间的字符数是20,包括Word中的字符(因此它保持对齐).使用python我做到了这个:

    offset = 20 - len(word)

    printer = timestamp + ' ' + word
    for i in range(0, offset):
        printer += ' '
    printer += score
Run Code Online (Sandbox Code Playgroud)

哪个有效,但python向我抛出一个错误,我从未使用过(因为它不是).虽然这不是一个大问题,但我只是想知道是否有更好的方法.

编辑:

由于我无法为此添加答案(因为它标记为重复),更换整个事情的更好方法是

printer = timestamp + ' ' + word.ljust(20) + score
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何判断ansible的unarchive模块创建了哪个目录?

我正在编写一本ansible playbook来自动安装一个软件.当我从网站上下载tarball时:

software-package-release.tar.gz
Run Code Online (Sandbox Code Playgroud)

当解压缩时,我留下目录

software-package-v2.15/
Run Code Online (Sandbox Code Playgroud)

ansible有没有办法注册作为unarchive模块的一部分创建的目录?

我尝试过以下播放(我把nrpe-lkdsflkdjf文件放在那里,其中包含一个dir nrpe-2.15)

- name: Extract
  unarchive
    src:/tmp/nrpe-lkdsflkdjf
    dest: /tmp/
    copy: no
  register: tar_reg

- name: debug tar_reg
  debug: var=tar_reg
Run Code Online (Sandbox Code Playgroud)

这是调试的输出:

ok: [IP-here] => {
    "tar_reg": {
        "changed": true, 
        "check_results": {
            "cmd": "/bin/gtar -C \"/tmp/\" --diff -f \"/tmp/nrpe-lkdsjflkdsjf\"", 
            "err": "/bin/gtar: nrpe-2.15: Warning: Cannot stat: No such file or directory\n/bin/gtar: nrpe-2.15/SECURITY: Warning: Cannot stat: No such file or directory\n/bin/gtar: nrpe-2.15/README.Solaris: Warning: Cannot stat: No such file or directory\n/bin/gtar: nrpe-2.15/init-script.debian.in: Warning: Cannot stat: No …
Run Code Online (Sandbox Code Playgroud)

tar ansible ansible-playbook

11
推荐指数
1
解决办法
5313
查看次数

如何在python中传入包含其他元素的字典?

我有一本字典:

big_dict = {1:"1",
            2:"2",
            ...
            1000:"1000"}
Run Code Online (Sandbox Code Playgroud)

(注意:我的字典实际上不是字符串的数字)

我将这个字典传递给一个需要它的函数.我经常使用字典来实现不同的功能.但是,有时候我想发送big_dict一个额外的密钥:项目对,这样我想发送的字典就相当于:

big_dict[1001]="1001"
Run Code Online (Sandbox Code Playgroud)

但我不想实际将值添加到字典中.我可以制作字典的副本并将其添加到那里,但我想避免这会消耗的内存+ CPU周期.

我目前的代码是:

big_dict[1001]="1001"
function_that_uses_dict(big_dict)
del big_dict[1001]
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但它似乎相当笨拙.

如果这是一个我会做的字符串:

function_that_uses_string(myString + 'what I want to add on')
Run Code Online (Sandbox Code Playgroud)

用字典有没有相同的方法呢?

python dictionary

9
推荐指数
1
解决办法
171
查看次数

尝试使用django-pyodbc-azure连接到MSSQL会导致找不到文件错误

我认为我的问题或多或少是试图从在Linux上运行的django查询SQL Server的重复- 无法打开lib'/ path/to/libtdsodbc.so',但答案完全没有用.

我使用以下东西:

  1. Ubuntu 15.04
  2. Python3
  3. Django 1.9 (通过pip3安装)
  4. freetds-dev 0.91-6build1 通过apt-get安装
  5. django-pyodbc-azure/ django-pyodbc通过pip3安装
  6. MSSQL 2012

尝试连接时,执行python3 manage.py inspectdb以下操作:

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 199, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 171, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.4/dist-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
    timeout=timeout)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)")

The above exception was the direct cause of the …
Run Code Online (Sandbox Code Playgroud)

python sql-server django django-pyodbc django-pyodbc-azure

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

ansible是否具有允许调试/暂停的任何功能?

我想在远程测试机上运行我的ansible playbook,但作为测试方法,我想在每个步骤之间验证我期望完成的工作.

我想在每个任务命令之后或多或少地添加一个"暂停"任务,但是实际上并没有将它放入我的yaml脚本中.ansible有什么样的"调试"模式可以实现吗?

我正在使用ansible 1.5,但我对那些使用较新版本功能的答案持开放态度.

ansible ansible-playbook

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

在Ansible临时命令中使用Ansible事实

是否可以使用ansible_factsAnsible adhoc命令中通常包含的内容?

例如,我/tmp/myFile所有服务器上都有一个文件,我想这样做:

ansible all -i [inventory file] -m fetch -a "src=/tmp/myFile dest=myFile-[insert ansible_hostname here]"
Run Code Online (Sandbox Code Playgroud)

无需为此编写一本完整的剧本。

ansible ansible-facts ansible-ad-hoc

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

展平,删除重复项,并在python中对列表进行排序

这个答案我有一个扁平的列表.

现在我想删除重复项并对列表进行排序.目前我有以下内容:

x = itertools.chain.from_iterable(results[env].values()) #From the linked answer
y = sorted(list(set(x)), key=lambda s:s.lower())
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?在我的情况下,x大小约为32,000,y最终大小约为1,100.我有什么工作,但我想看看有没有更好的(更快,更可读等)

python python-3.x

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

将 django 字段命名为驼峰式命名是否安全?

我正在使用带有 MSSQL Server 后端的 django。我inspectdb在一个数据库上运行,它使我所有的字段名称都小写,以前它们是驼峰式的。

我想保留camelCase(即使它不与Python 兼容)。我在inspectdb.py中找到了它的位置:

 """
        Modify the column name to make it Python-compatible as a field name
        """
        field_params = {}
        field_notes = []

        new_name = col_name.lower()
        if new_name != col_name:
            field_notes.append('Field name made lowercase.')
Run Code Online (Sandbox Code Playgroud)

删除 col_name.lower() 是否安全,或者是否有什么会导致驼峰命名导致问题?

sql-server django django-models

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

为什么Java认为我的构造函数调用不明确?

我在java应用程序中有以下代码:

UserMessage um = new UserMessage("a string", 
                                 false, 
                                 "another String", 
                                 "one last string");
Run Code Online (Sandbox Code Playgroud)

Eclipse告诉我这行代码有错误:

The constructor UserMessage(String, Object[]) is ambiguous  
Run Code Online (Sandbox Code Playgroud)

UserMessage的所有构造函数的签名是:

1. public UserMessage(String key)
2. public UserMessage(String key, boolean escapeHTML, Object... args)
3. public UserMessage(String key, Object... args)
4. public UserMessage(ErrorCode code)
5. public UserMessage(ErrorCode code, Object... args)
Run Code Online (Sandbox Code Playgroud)

对我而言,我正在调用的构造函数应该指向上面的#2.这个错误似乎告诉我它认为它可能指向第三个构造函数.

为什么这个电话有歧义?我唯一能想到的是false,由于某种原因,是否会被投射到一个Boolean对象,但显然这不是我的代码所做的 - 所以这必须是java编译器自己做的事情.

java eclipse polymorphism java-6

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

代码调用新的GenericObject()但GenericObject.java没有构造函数

我正在查看一些我正在使用的代码,其中有一点特别让我感到震惊:

在文件中有一个块:

public void prepare(){
    if (this.GenericObjectID != null) 
         doStuff();
    else{
         this.GenericObjet = new GenericObject();
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我浏览时,GenericObject.java根本就没有构造函数.代码运行,但我没有写它,所以我不是肯定的(还是!).所以我的问题是:这怎么可能?什么是java编译器在看到此调用时所做的事情,但是文件中没有描述该对象的构造函数?

java compiler-construction constructor

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