繁体   English   中英

Python从剪贴板下载URL

[英]Python download URL from clipboard

我正在尝试下载剪贴板中包含的URL,但是我找不到防止重复下载同一页面的方法。 这是我尝试过的方法,但是出现错误TypeError: 'int' object has no attribute '__getitem__'是什么意思? 它说错误在第13行,在这里检查URL是否有效。

import time
import os
import urllib

basename = "page"
extension = ".html"
count=0
old_url = ""

while(1):
    time.sleep(1) #check clipboard every second
    clipboard = os.system("pbpaste") # get contents of clipboard
    if clipboard[:4] == "http" and clipboard != old_url: # check if valid URL and is diffrent
        while os.path.exists(basename+str(count)+extension): # Create new name
            count=count+1
        old_url = clipboard
        name=basename+str(count)+extension
        data=urllib.urlopen(clipboard).read() #get page data
        file(name, "wb").write(data) # write to file

问题在这条线上:

clipboard = os.system("pbpaste")

原因如下:

In [3]: ?os.system
Type:       builtin_function_or_method
String Form:<built-in function system>
Docstring:
system(command) -> exit_status

Execute the command (a string) in a subshell.

os.system返回命令的退出状态 ,而不是命令的标准输出。

请尝试使用子流程模块:

import subprocess
clipboard = subprocess.check_output('pbpaste', shell=True)

但是请记住,它可能为空白(或少于五个字符),这将在您执行clipboard[:4]时导致程序崩溃。 最佳实践是在切片对象之前检查其长度: if (len(clipboard) > 4) ,或者更好的是if (clipboard.startswith('http'))

祝您好运,编码愉快!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM