我尝试了多种方法从谷歌驱动器通过oauth和API下载文件,但是我无法下载文件.我相信我已经正确认证了.运行我的代码后,看起来下载文件成功(没有错误),但没有下载文件.
这是我到目前为止尝试的代码:
def download_file(file_id, mimeType):
if "google-apps" in mimeType:
return
request = drive_service.files().get(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
Run Code Online (Sandbox Code Playgroud)
但是,这会导致"下载100%".被打印到控制台,但没有下载文件.
我也尝试过:
def download2(download_url):
resp, content = drive_service._http.request(download_url)
if resp.status == 200:
print 'Status: %s' % resp
return content
else:
print 'An error occurred: %s' % resp
return None
Run Code Online (Sandbox Code Playgroud)
这也不会产生下载的文件,但它确实给了我200条消息.
这两个似乎都正确地与API联系.我需要做一些额外的步骤来实际获取计算机上的文件吗?
编辑:
这是我的代码的其余部分:
import json
import webbrowser
import httplib2
import io
from …Run Code Online (Sandbox Code Playgroud) 我看到你可以通过Webdriver设置下载文件的位置,如下所示:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv")
browser = webdriver.Firefox(firefox_profile=fp)
Run Code Online (Sandbox Code Playgroud)
但是,我想知道在下载文件时是否有类似的方式给文件命名?最好,可能不是与配置文件相关的东西,因为我将通过一个浏览器实例下载~6000个文件,并且不希望每次下载都必须重新启动驱动程序.
编辑:使用所选答案建议的代码解决方案.下载每个文件后重命名该文件.
import os
os.chdir(SAVE_TO_DIRECTORY)
files = filter(os.path.isfile, os.listdir(SAVE_TO_DIRECTORY))
files = [os.path.join(SAVE_TO_DIRECTORY, f) for f in files] # add path to each file
files.sort(key=lambda x: os.path.getmtime(x))
newest_file = files[-1]
os.rename(newest_file, docName+".pdf")
Run Code Online (Sandbox Code Playgroud) 我正在使用正则表达式来查找文本正文中出现的字符串模式.一旦我发现字符串模式出现,我想在字符串之前和之后得到x个单词(x可以小到4,但如果仍然有效则最好是~10).
我目前正在使用正则表达式查找所有实例,但偶尔会挂起.有没有更有效的方法来解决这个问题?
这是我目前的解决方案:
sub = r'(\w*)\W*(\w*)\W*(\w*)\W*(\w*)\W*(%s)\W*(\w*)\W*(\w*)\W*(\w*)\W*(\w*)' % result_string #refind string and get surrounding += 4 words
surrounding_text = re.findall(sub, text)
for found_text in surrounding_text:
result_found.append(" ".join(map(str,found_text)))
Run Code Online (Sandbox Code Playgroud) 我试图通过版本2.11的帖子端点刮掉公共facebook地方的状态.我调用的生成的URL如下:
https://graph.facebook.com/v2.11/41585566807/posts?access_token=XXX&fields=message%2Clink%2Ccreated_time%2Ctype%2Cname%2Cid%2Ccomments.limit%280%29.summary%28true%29%2Cshares%2Creactions.limit%280%29.summary%28true%29&limit=100&after=Q2c4U1pXNTBYM0YxWlhKNVgzTjBiM0o1WDJsa0R5QTBNVFU0TlRVMk5qZA3dOem90TmprM05qWTFOREEwTmprMU1qUTVOREEwTXc4TVlYQnBYM04wYjNKNVgybGtEeDAwTVRVNE5UVTJOamd3TjE4eE1ERTFNRFF6TmpjME5UZAzNOamd3T0E4RWRHbHRaUVpPcUpBRUFRPT0ZD
Run Code Online (Sandbox Code Playgroud)
我正在翻阅100个状态的块来返回它们.此方法适用于页面上的前2600个状态,但是一旦我尝试获取下一个100,我收到以下错误消息.
{
"error": {
"message": "(#2) Service temporarily unavailable",
"type": "OAuthException",
"is_transient": true,
"code": 2,
"fbtrace_id": "EezWeUvcCXd"
}
}
Run Code Online (Sandbox Code Playgroud)
尽管is_transient是真的,但它持续数小时的重复调用(每5秒)到api.知道为什么会出现此错误消息以及如何避免它?
我正在将我的一些Java代码转换为scala,我希望能够获得一个特定的头并将其作为字符串返回.
在java我有:
return request().getHeader("myHeader")
Run Code Online (Sandbox Code Playgroud)
我一直无法在scala中实现同样的功能.任何帮助将不胜感激!谢谢!
我试图用不同的填充颜色的节点创建一个有向图。我已经创建了一个gv文件,如下所示:
digraph mentions {
"A" -> "B"
"A" -> "C"
"B" -> "C"
"B" -> "A"
"A" [shape=circle, style=filled, fillcolor=red]
"B" [shape=circle, style=filled, fillcolor=green]
"C" [shape=circle, style=filled, fillcolor=purple]
}
Run Code Online (Sandbox Code Playgroud)
我的命令行参数是:
ccomps -zX#0-1000 testGraphCalls.gv | \
grep "-" | cat <(echo "digraph mentions {") - <(echo "}") | \
sfdp -Gbgcolor=white -Ecolor=blue \
-Nwidth=1 -Nheight=1 -Nfixedsize=true \
-Nlabel='' -Earrowsize=0.4 -Gsize=75 -Gratio=fill \
-Tpng > test.png
Run Code Online (Sandbox Code Playgroud)
但是,我白色圆圈的节点用黑色勾勒出轮廓。关于如何使节点正确填充的任何想法?
我正在尝试选择一个文本框并通过 selenium web 驱动程序在其中输入文本。html如下:
</div><div>
<input name="mLayout$ctl00$ctl00$6$16$ctl00$Database" type="text" value="Enter database name" maxlength="175" size="26" id="mLayout_ctl00_ctl00_6_16_ctl00_Database" accesskey="s" title="Go search this database" class="InputContent GhostText" onfocus="SearchBoxOnFocus('mLayout_ctl00_ctl00_6_16_ctl00_Database');" onkeypress="if(!__TextBoxOnKeyPress('mLayout$ctl00$ctl00$6$16$ctl00$GoButton',event.which)) { return false; }" /> <input type="image" name="mLayout$ctl00$ctl00$6$16$ctl00$GoButton" id="mLayout_ctl00_ctl00_6_16_ctl00_GoButton" title="Go search database" src="http://images-statcont.westlaw.com/images/go_v602.gif" alt="Go search database" align="absmiddle" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("mLayout$ctl00$ctl00$6$16$ctl00$GoButton", "", true, "", "", false, false))" style="height:18px;width:21px;border-width:0px;" />
</div><div>
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法
driver.find_element_by_id("mLayout_ctl00_ctl00_6_16_ctl00_Database")
driver.find_element_by_name("mLayout$ctl00$ctl00$6$16$ctl00$Database")
dbElement = WebDriverWait(driver, 20).until(lambda x : x.find_element_by_id("mLayout_ctl00_ctl00_6_16_ctl00_Database"))
Run Code Online (Sandbox Code Playgroud)
字段中的 $ 和 _ 字符有什么特别之处吗?为什么硒不能定位这些元素?