运行:
my_machine~/opt/ams/data/ep/success$ expect -c "spawn /usr/bin/scp xmlEventLog_2010-03-22T14-28-36_PFS_1_2.xml adaptive@10.10.12.17:/opt/ams/epf_3_4/xmlEventLog_2010-03-22T14-28-36_PFS_1277900174_2.xml; expect { '*password:*' { send 'ad'\r\n }}"
Run Code Online (Sandbox Code Playgroud)
似乎没有工作,因为我仍然被要求输入密码.
spawn /usr/bin/scp xmlEventLog_2010-03-22T14-28-36_PFS_1_2.xml adaptive@10.10.12.17:/opt/ams/epf_3_4/xmlEventLog_2010-03-22T14-28-36_PFS_1277900174_2.xml
adaptive@10.10.12.17's password:
Run Code Online (Sandbox Code Playgroud)
如果我以ascript运行它运行正常.
my_machine~/opt/ams/data/ep/success$ ./try.sh
spawn /usr/bin/scp xmlEventLog_2010-03-22T14-28-36_PFS_1_2.xml adaptive@10.10.12.17:/opt/ams/epf_3_4/xmlEventLog_2010-03-22T14-28-36_PFS_1277900174_2.xml
adaptive@10.10.12.17's password:
xmlEventLog_2010-03-22T14-28-36_PFS_1_2.xml 100% 13MB 13.2MB/s 00:01
my_machine~/opt/ams/data/ep/success$ cat try.sh
#!/bin/bash
expect -c "
spawn /usr/bin/scp xmlEventLog_2010-03-22T14-28-36_PFS_1_2.xml adaptive@10.10.12.17:/opt/ams/epf_3_4/xmlEventLog_2010-03-22T14-28-36_PFS_1277900174_2.xml
expect {
"*password:*" { send "ad"\r\n; interact }
eof { exit }
}
exit
"
my_machine~/opt/ams/data/ep/success$
Run Code Online (Sandbox Code Playgroud)
我想在一行命令而不是脚本中运行它.有没有人有任何想法?
提前致谢
一个
我在下面回答了我自己的问题
有没有办法让a webDriverWait等待一些元素出现,并根据出现的元素采取相应的行动?
目前我WebDriverWait在try循环中执行一个操作,如果发生超时异常,我会运行替代代码,等待另一个元素出现.这看起来很笨拙.有没有更好的办法?这是我(笨拙)的代码:
try:
self.waitForElement("//a[contains(text(), '%s')]" % mime)
do stuff ....
except TimeoutException:
self.waitForElement("//li[contains(text(), 'That file already exists')]")
do other stuff ...
Run Code Online (Sandbox Code Playgroud)
它需要等待整整10秒才能查看该文件是否已存在于系统上的消息.
该函数waitForElement只执行了许多WebDriverWait调用:
def waitForElement(self, xPathLocator, untilElementAppears=True):
self.log.debug("Waiting for element located by:\n%s\nwhen untilElementAppears is set to %s" % (xPathLocator,untilElementAppears))
if untilElementAppears:
if xPathLocator.startswith("//title"):
WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator))
else:
WebDriverWait(self.driver, 10).until(lambda driver : self.driver.find_element_by_xpath(xPathLocator).is_displayed())
else:
WebDriverWait(self.driver, 10).until(lambda driver : len(self.driver.find_elements_by_xpath(xPathLocator))==0)
Run Code Online (Sandbox Code Playgroud)
有人建议以更有效的方式完成这项工作吗?
我有一个用户模型类,如下所示:
@JsonSerialize
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
@Builder
public class User {
@Default
String _dn = BASE_USER_DN;
@Default
String[] objectClass = {"top", "person", "organizationalPerson", "inetOrgPerson", "companyUser"};
@Default
String[] cn = {"user205"};
@Default
String[] sn = {"Dynamic2"};
@Default
String[] username = {"LindaDynamic2"};
}
Run Code Online (Sandbox Code Playgroud)
现在我想生成一个省略空字段的用户对象,因此:
userBody = User.builder().cn(null).build();
Run Code Online (Sandbox Code Playgroud)
将创建一个没有 cn 属性的对象,或者如果我添加了一个没有默认值的字段并且它没有在构建器上设置,它将被省略。
这可能吗?
我想知道是否有人有任何想法,我怎么能找到为什么我似乎让firefox运行通过selenium webdriver.当我跑步时会发生什么:
self.driver=webdriver.Firefox()
Run Code Online (Sandbox Code Playgroud)
我的桌面上有一个空白的对话框.我在Redhat 5.6上运行,我的selenium版本是2.21.3.我尽可能地调试代码,并在firefox_binary模块中的以下代码上显示空白对话框后,我可以确定代码冻结:
Popen([self._start_cmd, "-slient"], stdout=PIPE, stderr=STDOUT, env=self._filefox_env).wait()
Run Code Online (Sandbox Code Playgroud)
我打开了一个cmd提示符并手动运行上面提到的命令,没有出现这样的空白对话框.这会让我觉得它不是一个firefox错误.我无法找到出现此错误的位置.有任何想法吗?
更新
我安装了centos 6并安装了firefox 10.0.6和selenium webdriver使用该版本
更新
除了使用centos 6我还需要在redhat上解决这个问题,所以这里有更多细节和我发现的内容.因为需要解决,我会对此给予赏金:
我在这上面挖了一点,发现问题在于使用32位lib的selenium.我使用Firefox ESR 10.0.6(64位)在Redhat Enterprise Linux Server 5.6(x86_64)上安装了selenium 2.25.0版.我更改了firefoxBinary类中的_start_from_profile_path方法,以查看问题所在:
p=open("/tmp/ffoutput.txt", "w+")
Popen([self._start_cmd, "-silent"], stdout=p, stderr=STDOUT, env=self._firefox_env).communicate()
Run Code Online (Sandbox Code Playgroud)
我发现/tmp/ffoutput.txt我发现selenium试图使用32位的lib:
Failed to dlopen /usr/lib/libX11.so.6
dlerror says: /usr/lib/libX11.so.6: wrong ELF class: ELFCLASS32
Run Code Online (Sandbox Code Playgroud)
此消息不断发生,firefox挂起,显示空白对话框.我搜索了这个问题并发现有些人抱怨但没有解决方案有效(我尝试将64位lib软件链接到32位lib目录后移动32位lib但这导致geko崩溃,我尝试将连续错误发送到/ dev/null但这没有解决任何问题).
我创建了一个装饰器来打印它所装饰的函数的名称并且它可以工作:
>>> def debug(func):
... msg=func.__qualname__
... def wrapper(*args, **kwargs):
... print(msg)
... return func(*args, **kwargs)
... return wrapper
...
>>> @debug
... def add(x, y):
... return x+y
...
>>> add(1,2)
add
3
Run Code Online (Sandbox Code Playgroud)
现在我想将 wraps 装饰器应用于包装器,但是当我这样做时,我收到错误“TypeError: update_wrapper() got multiple values for argument 'wrapped'”
>>> from functools import wraps
>>>
>>> def debug(func):
... msg=func.__qualname__
... @wraps
... def wrapper(*args, **kwargs):
... print(msg)
... return func(*args, **kwargs)
... return wrapper
...
>>> @debug
... def add(x, y):
... return x+y …Run Code Online (Sandbox Code Playgroud) 我有一个如下形式的熊猫数据框:
Response
Time
2018-01-14 00:00:00 201
2018-01-14 00:00:00 400
2018-01-14 00:00:00 200
2018-01-14 00:00:00 400
2018-01-14 00:00:00 200
Run Code Online (Sandbox Code Playgroud)
时间是索引列。
我想获得随时间(15 分钟间隔)分组的响应图表,所以我写了以下内容:
for ind, itm in enumerate(df_final['Response'].unique()):
ax=df_final[df_final['Response'] == itm].groupby(pd.Grouper(key='Time',freq='15Min')).count().plot(kind='bar', figsize=(15,10), title="Response Codes")
ax.legend(["Response: {}".format(itm)])
Run Code Online (Sandbox Code Playgroud)
这与折旧的 TimeGrouper 一起使用,上面代码中的第二行是:
ax=df_final[df_final['Response'] == item].groupby(pd.TimeGrouper(freq='15Min')).count().plot(kind='bar', figsize=(15,10), title="Response Codes")
Run Code Online (Sandbox Code Playgroud)
但是当我运行 Grouper 代码时出现错误:
KeyError: 'The grouper name Time is not found'
Run Code Online (Sandbox Code Playgroud)
我还将密钥更改为 df_final.index.name 但这也导致了 KeyError: 'The grouper name Time is not found'
该索引的类型为 index,但我将其更改为 DatetimeIndex:
type(df_final.index)
pandas.core.indexes.datetimes.DatetimeIndex
Run Code Online (Sandbox Code Playgroud)
在我更改索引类型并运行后:
ax=df_final[df_final['Response'] == itm].groupby(pd.Grouper(key=df_final.index, freq='15Min')).count().plot(kind='bar', figsize=(15,10), title="Response Codes")
Run Code Online (Sandbox Code Playgroud)
我有:
TypeError: …Run Code Online (Sandbox Code Playgroud) 只是想知道是否有人能告诉我原因
import subprocess, commands
p=subprocess.Popen(["ls", "*00080"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output=p.communicate()[0]
print "o", output
result=commands.getoutput("ls *00080")
print "o", result
Run Code Online (Sandbox Code Playgroud)
给出输出:
o ls: cannot access *00080: No such file or directory
o 010.010.013.165.42974-010.010.013.164.00080
Run Code Online (Sandbox Code Playgroud)
两者都应该找不到它们的文件?
一个
我有一个包含多个数据结构的文件,如下所示:
eventTimestamp: 2010-03-23T07:56:19.166
result: Allowed
protocol: SMS
payload: RCOMM_SMS
eventTimestamp: 2010-03-23T07:56:19.167
result: Allowed
protocol: SMS
payload: RCOMM_SMS
eventTimestamp: 2010-03-23T07:56:19.186
result: Allowed
protocol: SMS
payload: SMS-MO-FSM
eventTimestamp: 2010-03-23T07:56:19.197
result: Allowed
protocol: SMS
payload: COPS
eventTimestamp: 2010-03-23T07:56:29.519
result: Blocked
protocol: SMS
payload: COPS
type: URL_IWF
result: Blocked
Run Code Online (Sandbox Code Playgroud)
我想找到有效载荷的所有事件:SMS-MO-FSM或有效载荷:在2010-03-23 12:56:47和2010-03-23 13之间发生的SMS-MO-FSM-INFO: 56:47.到目前为止查询此文件时,我已按以下方式使用awk:
cat checkThis.txt |
awk 'BEGIN{FS="\n"; RS=""; OFS=";"; ORS="\n"}
$1~/eventTimestamp: 2010-03-23T14\:16\:35/ && $4~/SMS-MO-FSM-INFO|SMS-MO-FSM$/ {$1=$1 ""; print $0}'
Run Code Online (Sandbox Code Playgroud)
这将为我提供2010-03-23 14:16:35第二次发生的所有事件.但是,我正在努力思考如何将日期范围放入我的查询中.我可以使用以下内容将日期放入纪元时间但是如何在我的awk中使用以下内容来检查日期是否在所需的时间之间:
python -c "import time; ENGINE_TIME_FORMAT='%Y-%m-%dT%H:%M:%S'; print int(time.mktime(time.strptime('2010-03-23T12:52:52', ENGINE_TIME_FORMAT)))"
Run Code Online (Sandbox Code Playgroud)
我知道这可以在Python中完成,但我已经在Python中编写了一个解析器,我希望这个方法作为替代检查器,所以我想尽可能使用awk.
我更进一步,创建了一个时间转换的python脚本:
#!/usr/local/bin/python
import time, …Run Code Online (Sandbox Code Playgroud)