小编Dir*_*irk的帖子

将分层(树状)XML 读入 Pandas 数据帧,保留层次结构

我有一个包含分层树状结构的 XML 文档,请参见下面的示例。

该文档包含多个<Message>标签(为方便起见,我只复制了其中一个)。

每个<Message>都有自己的一些关联数据 ( id, status, priority)。

此外,每个都<Message>可以包含一个或多个子节点,这些<Street>子节点又具有一些相关数据 ( <name>, <length>)。

此外,每个人都<Street>可以有一个或多个<Link>孩子,这些孩子又拥有自己的相关数据 ( <id>, <direction>)。

XML 文档示例:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Root xmlns="someNamespace">
<Messages>
<Message id='12345'>
   <status>Active</status>
   <priority>Low</priority>
   <Area>
    <Streets>
     <Street>
      <name>King Street</name>
      <length>Short</length>
       <Link>
        <id>75838745</id>
        <direction>North</direction>
       </Link>
       <Link>
        <id>168745</id>
        <direction>South</direction>
       </Link>
       <Link>
        <id>975416</id>
        <direction>North</direction>
       </Link>
     </Street>
     <Street>
      <name>Queen Street</name>
      <length>Long</length>
       <Link>
        <id>366248</id>
         <direction>West</direction>
       </Link>
       <Link>
        <id>745812</id>
         <direction>East</direction>
       </Link>
     </Street> …
Run Code Online (Sandbox Code Playgroud)

python xml tree hierarchical-data pandas

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

在Windows上对SQLite使用spatialite扩展

我知道之前有过类似的问题.但是,我在此发现的所有问题都涉及一些非常具体的系统设置,这些设置不适合我(因为我的也是如此).

系统:

  • Windows 7 64位
  • Python 3.4 64位
  • sqlite3 2.6.0(我猜的是附带Python)
  • Spatialite Windows二进制文件2.3.1(其他重要的东西?)

如何激活' spatialitesqlite3'模块的扩展名?

我尝试了什么(类似问题的其他人说它有效的方式):

  • https://www.gaia-gis.it/spatialite-2.3.1/binaries.html下载:
    • libspatialite-win-x86-2.3.1.zip
    • proj-win-x86-4.6.1.zip
    • geos-win-x86-3.1.1.zip
    • libiconv-win-x86-1.9.2.zip
  • 将所有这些解压缩到C:\上的同一个文件夹中
  • (也尝试过只将DLL放入该文件夹)
  • 将该文件夹放入我的系统PATH变量

然后,跑步

import sqlite3

conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite-2.dll")')
Run Code Online (Sandbox Code Playgroud)

conn.execute("SELECT load_extension('libspatialite-2.dll')")
sqlite3.OperationalError: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我还能尝试做些什么呢?

python windows sqlite spatialite

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

将pandas数据帧写入xlsm文件(启用了宏的Excel)

pandas.DataFrame.xlsx格式将Excel 写入Excel工作簿非常简单:

import pandas as pd
df = pd.DataFrame({'firstColumn' : [5, 2, 0, 10, 4], 'secondColumn' : [9, 8, 21, 3, 8]})
print(df)
df.to_excel('test.xlsx')
Run Code Online (Sandbox Code Playgroud)

这使:

   firstColumn  secondColumn
0            5             9
1            2             8
2            0            21
3           10             3
4            4             8
Run Code Online (Sandbox Code Playgroud)

和相应的Excel文件.

有没有还写了一个可能性DataFrame.xlsmExcel文件?这实际上或多或少相同.xlsx,但有可能在文件中存储VBA宏.我需要这个,因为我想在创建文件后插入并运行VBA宏.

但是,在常规xlsx文件上尝试此操作时,我会在弹出窗口中收到以下错误消息:

The following features cannot be saved in macro-free workbooks: VB project.
To save a file with these features, click No, and then choose a …
Run Code Online (Sandbox Code Playgroud)

python excel vba pandas

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

在Dockerfile中进行Subversion导出/签出而不在屏幕上打印密码

我想编写一个Dockerfile,将一个目录从远程Subversion存储库导出到构建上下文中,以便在后续命令中使用这些文件。该存储库通过用户/密码身份验证来保护。

该Dockerfile可能如下所示:

# base image
FROM ubuntu

# install subversion client
RUN apt-get -y update && apt-get install -y subversion

# export my repository
RUN svn export --username=myUserName --password=myPassword http://subversion.myserver.com/path/to/directory

# further commands, e.g. on container start run a file just downloaded from the repository
CMD ["/bin/bash", "path/to/file.sh"]
Run Code Online (Sandbox Code Playgroud)

但是,这样做的缺点是在屏幕上或指向stdout的任何日志文件中打印我的用户名和密码,如下所示: Step 2 : RUN svn export --username=myUserName --password=myPassword http://subversion.myserver.com/path/to/directory。在我的情况下,这是一个Jenkins构建日志,其他不应该查看凭据的人也可以访问。

隐藏输出中用户名和密码回显的最简单方法是什么?

到目前为止,我还没有找到如何执行的方法 RUN在构建映像时在Dockerfile中静默命令的。可以将密码从其他地方导入并事先附加到命令,这样就不必再打印了吗?还是在Subversion中有任何无密码身份验证方法可以在Dockerfile上下文中使用(就无需交互设置它们而言)?

Subversion服务器正在我公司中远程运行,而不是在本地计算机或Docker主机上运行。据我所知,除了通过用户名/密码认证访问我的存储库外,我无权访问它,因此将任何密钥文件作为根目录复制到某些服务器文件夹可能很困难。

svn authentication docker dockerfile

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

在基于 Alpine Linux 的 Docker Image 中安装 pylint

我正在尝试在基于官方 Python 映像的 Alpine Linux 发行版的自定义 Docker 映像中安装Pylint。我尝试使用以下 Dockerfile:

FROM python:3.4-alpine
RUN apk add --update pylint
Run Code Online (Sandbox Code Playgroud)

<< 这失败了

Step 2/2 : RUN apk add --update pylint
 ---> Running in 34949003816d
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  pylint (missing):
    required by: world[pylint]
The command '/bin/sh -c apk add --update pylint' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

此外,我试过

FROM python:3.4-alpine
RUN pip3 install pylint
Run Code Online (Sandbox Code Playgroud)

<< 这失败了

Step 2/2 : RUN pip3 install pylint
 ---> Running in b044e3347d26
Collecting …
Run Code Online (Sandbox Code Playgroud)

python pylint docker alpine-linux

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

如何将 swagger-ui npm 模块与现有 OpenAPI 规范文件结合使用

查看安装 Swagger-UI 的文档可以看到npm正在发布两个官方模块:swagger-uiswagger-ui-dist。然而,我真的很难弄清楚如何将它们与现有的OpenApi 3.0规范一起使用。

我唯一需要的是一个简单的 Web 应用程序(普通node.jsexpress.js或任何有效的),它将为specification.yml嵌入到普通 Swagger-UI 文件中的现有文档提供服务,路径如/docs.

由于这需要以可重复的方式完成(最终将在 Docker 容器中运行),因此在此过程中不需要手动编辑文件。

我能得到的最接近的是下载一个发布 tar 球,提取dist文件夹,使用诸如sed用我自己的文件替换默认规范文件之类的工具,最后将其托管在像nginx.

然而,这对我来说看起来不必要的复杂,让我想知道这些npm模块应该用来做什么。

node.js npm swagger swagger-ui openapi

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

用于检查主机在关机后是否真的离线的 Ansible 任务

我正在使用以下 Ansible playbook 一次性关闭远程 Ubuntu 主机列表:

- hosts: my_hosts
  become: yes
  remote_user: my_user
  tasks:

    - name: Confirm shutdown
      pause:
        prompt: >-
          Do you really want to shutdown machine(s) "{{play_hosts}}"? Press
          Enter to continue or Ctrl+C, then A, then Enter to abort ...

    - name: Cancel existing shutdown calls
      command: /sbin/shutdown -c
      ignore_errors: yes

    - name: Shutdown machine
      command: /sbin/shutdown -h now
Run Code Online (Sandbox Code Playgroud)

关于这个的两个问题:

  1. 是否有任何可用的模块可以以比运行两个自定义命令更优雅的方式处理关机?
  2. 有什么方法可以检查机器是否真的停机?还是从同一个剧本中检查它是一种反模式?

我尝试了net_ping 模块,但我不确定这是否是它的真正目的:

- name: Check that machine is down
      become: no
      net_ping:
        dest: "{{ …
Run Code Online (Sandbox Code Playgroud)

shutdown ansible ansible-2.x

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

使用Python的Click库在对象中保存命令行选项的值

我想用Python的Click库解析一些命令行参数,并将提供的值保存在一个对象中.

我的第一个猜测是这样做:

import click

class Configuration(object):

    def __init__(self):

        # configuration variables
        self.MyOption = None

        # method call
        self.parseCommandlineArguments()

    @click.command()
    @click.option('--myoption', type=click.INT, default=5)
    def parseCommandlineArguments(self, myoption):

        # save option's value in the object
        self.MyOption = myoption

# create an instance
configuration = Configuration()
print(configuration.MyOption)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,而是我得到:

TypeError: parseCommandlineArguments() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

显然,传递self给装饰函数并不是正确的方法.如果我self从方法参数中删除然后我可以做print(myoption),它将5在屏幕上打印,但我的Configuration()类的任何实例都不会知道该值.

处理这个问题的正确方法是什么?我认为它与Click中的上下文处理有关,但我无法根据提供的示例使其工作.

python command-line-arguments python-click

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

带有路径匹配规则的traefik反向代理后面的Jenkins Docker容器

我有一个运行traefik反向代理的Docker容器,如下所示:

docker run \
  -d \
  --name traefik-reverse-proxy \
  --network="host" \
  -p 80:80 \
  -v /dev/null:/etc/traefik/traefik.toml \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik:1.5-alpine \
    --docker
Run Code Online (Sandbox Code Playgroud)

然后,我使用Jenkins运行另一个容器,该容器通过标签配置转发规则,以便traefik将所有请求转发到其路径以开头的/jenkins

docker run \
  -d \
  --name jenkins \
  --label "traefik.port=8080" \
  --label "traefik.frontend.rule=PathPrefix: /jenkins" \
  jenkins/jenkins:lts
Run Code Online (Sandbox Code Playgroud)

现在,打开http://localhost/jenkins,请求已正确转发到Jenkins容器,该容器将我重定向到index.html主页。但是,该页面大部分为空白,因为未正确加载JavaScript和CSS资产。

查看浏览器控制台,可以看到索引页面正在尝试从http://localhost/static/4e9c623d/scripts/yui/button/button-min.js该设置中不存在的地址中加载它们。相反,它应该/jenkins/在URL中包含该部分并尝试从中加载它们,例如http://localhost/jenkins/static/4e9c623d/scripts/yui/button/button-min.js-手动点击该URL将在浏览器中显示JS文件。

我尝试使用类似的规则组合,--label "traefik.frontend.rule=PathPrefix: /jenkins; AddPrefix: /jenkins/"但这并没有改变任何内容。

我将如何编写规则以使其正常工作?

jenkins docker traefik

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

将格式不一致的 csv 文件读入 Pandas Dataframe(带有标题和重复列标题的块)

我有一个 CSV 文件,它基本上如下所示(我将其缩短为显示结构的最小示例):

ID1#First_Name
TIME_BIN,COUNT,AVG
09:00-12:00,100,50
15:00-18:00,24,14
21:00-23:00,69,47
ID2#Second_Name
TIME_BIN,COUNT,AVG
09:00-12:00,36,5
15:00-18:00,74,68
21:00-23:00,22,76
ID3#Third_Name
TIME_BIN,COUNT,AVG
09:00-12:00,15,10
15:00-18:00,77,36
21:00-23:00,55,18
Run Code Online (Sandbox Code Playgroud)

可以看出,数据被分成多个块。每个块都有一个标题(例如ID1#First_Name),其中包含两个信息(IDxx_Name),以 分隔#

每个标题后跟列标题 ( TIME_BIN, COUNT, AVG),所有块都保持不变。

然后遵循属于列标题的一些数据行(例如TIME_BIN=09:00-12:00COUNT=100AVG=50)。

我想将此文件解析为 Pandas 数据帧,如下所示:

ID  Name        TIME_BIN     COUNT  AVG
ID1 First_Name  09:00-12:00  100    50
ID1 First_Name  15:00-18:00  24     14
ID1 First_Name  21:00-23:00  69     47
ID2 Second_Name 09:00-12:00  36     5
ID2 Second_Name 15:00-18:00  74     68
ID2 Second_Name 21:00-23:00  22     76
ID3 …
Run Code Online (Sandbox Code Playgroud)

python csv malformed pandas

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