我有一个包含分层树状结构的 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) 我知道之前有过类似的问题.但是,我在此发现的所有问题都涉及一些非常具体的系统设置,这些设置不适合我(因为我的也是如此).
系统:
如何激活' spatialitesqlite3'模块的扩展名?
我尝试了什么(类似问题的其他人说它有效的方式):
然后,跑步
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)
我还能尝试做些什么呢?
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) 我想编写一个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主机上运行。据我所知,除了通过用户名/密码认证访问我的存储库外,我无权访问它,因此将任何密钥文件作为根目录复制到某些服务器文件夹可能很困难。
我正在尝试在基于官方 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) 查看安装 Swagger-UI 的文档可以看到npm正在发布两个官方模块:swagger-ui和swagger-ui-dist。然而,我真的很难弄清楚如何将它们与现有的OpenApi 3.0规范一起使用。
我唯一需要的是一个简单的 Web 应用程序(普通node.js的express.js或任何有效的),它将为specification.yml嵌入到普通 Swagger-UI 文件中的现有文档提供服务,路径如/docs.
由于这需要以可重复的方式完成(最终将在 Docker 容器中运行),因此在此过程中不需要手动编辑文件。
我能得到的最接近的是下载一个发布 tar 球,提取dist文件夹,使用诸如sed用我自己的文件替换默认规范文件之类的工具,最后将其托管在像nginx.
然而,这对我来说看起来不必要的复杂,让我想知道这些npm模块应该用来做什么。
我正在使用以下 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)
关于这个的两个问题:
我尝试了net_ping 模块,但我不确定这是否是它的真正目的:
- name: Check that machine is down
become: no
net_ping:
dest: "{{ …Run Code Online (Sandbox Code Playgroud) 我想用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中的上下文处理有关,但我无法根据提供的示例使其工作.
我有一个运行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/"但这并没有改变任何内容。
我将如何编写规则以使其正常工作?
我有一个 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),其中包含两个信息(IDx和x_Name),以 分隔#。
每个标题后跟列标题 ( TIME_BIN, COUNT, AVG),所有块都保持不变。
然后遵循属于列标题的一些数据行(例如TIME_BIN=09:00-12:00,COUNT=100,AVG=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 ×6
docker ×3
pandas ×3
alpine-linux ×1
ansible ×1
ansible-2.x ×1
csv ×1
dockerfile ×1
excel ×1
jenkins ×1
malformed ×1
node.js ×1
npm ×1
openapi ×1
pylint ×1
python-click ×1
shutdown ×1
spatialite ×1
sqlite ×1
svn ×1
swagger ×1
swagger-ui ×1
traefik ×1
tree ×1
vba ×1
windows ×1
xml ×1