Tag: python

什么时候使用Selenium Webdriver的显式等待与隐式等待?

我在用: driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS); 但是对于下面的元素,它仍然会失败 driver.findElement(By.id("name")).clear(); driver.findElement(By.id("name")).sendKeys("Create_title_01"); 我已经添加了等待代码: for (int second = 0;; second++) { if (second >= 120) fail("timeout"); try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {} Thread.sleep(1000); } 不应该隐含的等待,等待一个元素被发现? 如果我使用显式等待,而不是我已经添加了Thread.sleep()的代码,它也会更好吗?

raw_input和超时

我想做一个raw_input('Enter something: .') 。 我想让它睡3秒,如果没有input,则取消提示并运行代码的其余部分。 然后代码再循环并执行raw_input 。 如果用户input'q'之类的东西,我也希望它能够被打破。

将列表分成大致相等长度的N个部分

将列表分成大致相等的部分最好的办法是什么? 例如,如果列表中有7个元素并将其分成2个部分,我们希望在一个部分中获得3个元素,另一个元素应该包含4个元素。 我正在寻找像even_split(L, n)这样的将L分成n部分的东西。 def chunks(L, n): """ Yield successive n-sized chunks from L. """ for i in xrange(0, len(L), n): yield L[i:i+n] 上面的代码给出了3个块,而不是3个块。 我可以简单地转置(遍历这个,并采取每一列的第一个元素,调用第一部分,然后采取第二,把它放在第二部分等),但是破坏项目的顺序。

Python 2.7获取用户input和操作为不带引号的string

我想从用户那里得到一个string,然后去操纵它。 testVar = input("Ask user for something.") 有没有一种方法让testVar成为一个string,而不必让用户在引号中键入他的回复? 即“你好”与你好 如果用户键入Hello,则会出现以下错误: NameError:名称“Hello”未定义

iterrows是否有性能问题?

使用大pandas时,我注意到性能很差。 这是别人经历的吗? 是否特定于iterrows,并应该避免这个函数的特定大小的数据(我正在2-3万行)? 这个关于GitHub的讨论让我相信这是在数据框中混合dtypes时造成的,但是下面这个简单的例子表明,即使在使用一个dtype(float64)的时候它也存在。 这在我的机器上需要36秒钟: import pandas as pd import numpy as np import time s1 = np.random.randn(2000000) s2 = np.random.randn(2000000) dfa = pd.DataFrame({'s1': s1, 's2': s2}) start = time.time() i=0 for rowindex, row in dfa.iterrows(): i+=1 end = time.time() print end – start 为什么vector化的操作应用得这么快? 我想必须有一些逐行迭代。 我不知道如何在我的情况下不使用iterrows(这将保存将来的问题)。 因此,如果您始终能够避免这种迭代,我将不胜感激。 我正在根据不同数据框中的数据进行计算。 谢谢! —编辑:我想运行的简化版本已被添加到下面— import pandas as pd […]

框架的Python Tkinter滚动条

我的目标是添加一个垂直滚动条的框架,其中有几个标签。 滚动条应该在框架内的标签超过框架高度时自动启用。 经过search,我发现这个有用的职位。 基于这篇文章,我明白,为了实现我想要的,(纠正我,如果我错了,我是一个初学者)我必须先创build一个框架,然后创build一个canvas内的框架,并将滚动条粘到框架以及。 之后,创build另一个框架,并将其放在canvas内作为窗口对象。 所以,我终于想出了这个 from Tkinter import * def data(): for i in range(50): Label(frame,text=i).grid(row=i,column=0) Label(frame,text="my text"+str(i)).grid(row=i,column=1) Label(frame,text="……….").grid(row=i,column=2) def myfunction(event): canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200) root=Tk() sizex = 800 sizey = 600 posx = 100 posy = 100 root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy)) myframe=Frame(root,relief=GROOVE,width=50,height=100,bd=1) myframe.place(x=10,y=10) canvas=Canvas(myframe) frame=Frame(canvas) myscrollbar=Scrollbar(myframe,orient="vertical",command=canvas.yview) canvas.configure(yscrollcommand=myscrollbar.set) myscrollbar.pack(side="right",fill="y") canvas.pack(side="left") canvas.create_window((0,0),window=frame,anchor='nw') frame.bind("<Configure>",myfunction) data() root.mainloop() 我做对了吗? […]

在Python中处理string中的转义序列

有时候,当我从文件或用户获得input,我得到一个string中的转义序列。 我想以Python处理string文字转义序列的方式来处理转义序列 。 例如,假设myString被定义为: >>> myString = "spam\\neggs" >>> print(myString) spam\neggs 我想要一个函数(我会叫它的process ),这样做: >>> print(process(myString)) spam eggs 函数能够处理Python中的所有转义序列(在上面的链接中的表格中列出)是非常重要的。 Python有一个function来做到这一点?

sqlite3.ProgrammingError:提供的绑定数量不正确。 目前的声明使用1,并提供了74

def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close() 我无法弄清楚为什么这是给我的错误,我试图插入的实际string是74个字符长,它是:“/ gifs /史诗 – 失败 – 照片 – 我 – 固定 – 它 – 噢人 – -tire-压力,low.gif” 我试图在插入之前str(array [cnt]),但同样的问题正在发生,数据库只有一列,这是一个TEXT值。 我已经呆了好几个小时了,我不知道是怎么回事。

Python格式的timedeltastring

我是一个Python的新手(2周),我有格式化datetime.timedelta对象的麻烦。 以下是我正在做的事情:我有一个对象列表,而对象类的其中一个成员是timedelta对象,它显示事件的持续时间。 我想以小时:分钟的格式显示那段时间。 我已经尝试了多种方法来做到这一点,我有困难。 我目前的做法是给我的对象添加方法,返回小时和分钟。 我可以通过将timedelta.seconds除以3600并四舍五入来得到小时数。 我得到剩余的秒数,并将其转换为分钟的麻烦。 顺便说一句,我使用Google AppEngine和Django Templates进行演示。 如果有人能够帮助或者知道更好的解决方法,我会很高兴的。 谢谢,

Python字典:都是keys()和values()总是一样的顺序吗?

它看起来像字典中的keys()和values()方法返回的列表总是一对一的映射(假设字典在调用2个方法之间没有改变)。 例如: >>> d = {'one':1, 'two': 2, 'three': 3} >>> k, v = d.keys(), d.values() >>> for i in range(len(k)): print d[k[i]] == v[i] True True True 如果不在调用keys()和调用values()之间更改字典,那么假设上面的for循环将始终打印为真是错误的? 我找不到任何文件证实这一点。