>>> teststr = '我的eclipse不能正确的解码gbk码!' >>> teststr '\xe6\x88\x91\xe7\x9a\x84eclipse\xe4\xb8\x8d\xe8\x83\xbd\xe6\xad\xa3\xe7\xa1\xae\xe7\x9a\x84\xe8\xa7\xa3\xe7\xa0\x81gbk\xe7\xa0\x81\xef\xbc\x81' >>> tests2 = u'我的eclipse不能正确的解码gbk码!' >>> test3 = tests2.encode('gb2312') >>> test3 '\xce\xd2\xb5\xc4eclipse\xb2\xbb\xc4\xdc\xd5\xfd\xc8\xb7\xb5\xc4\xbd\xe2\xc2\xebgbk\xc2\xeb\xa3\xa1' >>> test3 '\xce\xd2\xb5\xc4eclipse\xb2\xbb\xc4\xdc\xd5\xfd\xc8\xb7\xb5\xc4\xbd\xe2\xc2\xebgbk\xc2\xeb\xa3\xa1' >>> teststr '\xe6\x88\x91\xe7\x9a\x84eclipse\xe4\xb8\x8d\xe8\x83\xbd\xe6\xad\xa3\xe7\xa1\xae\xe7\x9a\x84\xe8\xa7\xa3\xe7\xa0\x81gbk\xe7\xa0\x81\xef\xbc\x81' >>> test3.decode('gb2312').encode('utf-8') '\xe6\x88\x91\xe7\x9a\x84eclipse\xe4\xb8\x8d\xe8\x83\xbd\xe6\xad\xa3\xe7\xa1\xae\xe7\x9a\x84\xe8\xa7\xa3\xe7\xa0\x81gbk\xe7\xa0\x81\xef\xbc\x81' >>> test3.decode('gb2312').encode('utf-8') == teststr True 如上所见,test3变量(gb2312编码)经过解码(变成unicode字符串)后再使用utf-8编码,就成了与teststr值相同的串了. 通过上面的例子我们也发现,

1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。2.读文件读文本文件input = open('data', 'r')#第二个参数默认为rinput = open('data')读二进制文件input = open('data', 'rb')读取所有内容file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )读固定字节file_object = open('abinfile', 'rb')try: while True: chunk = file_object.read(100) if not chunk: break do_something_with(chunk)finally: file_object.close( )读每行list_of_all_the_lines = file_object.readlines( )如果文件是文本文件,还可以直接遍历文件对象获取每行:for line in file_object: process line3.写文件写文本文件output = open('data.txt', 'w')写二进制文件output = open('data.txt', 'wb')追加写文件output = open('data.txt', 'a')output .write("\n都有是好人")output .close( )写数据file_object = open('thefile.txt', 'w')file_object.write(all_the_text)file_object.close( )以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

看了oschina上的两个代码,受益匪浅。其中对join()方法不理解,看python官网文档的介绍:join([timeout]):等待直到进程结束。这将阻塞正在调用的线程,直到被调用join()方法的线程结束。(好难翻译,应该是这个意思)哈哈,这个易懂。join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。复制代码 代码如下:#-*- encoding: gb2312 -*-import string, threading, time def thread_main(a):    global count, mutex    # 获得线程名    threadname = threading.currentThread().getName()     for x in xrange(0, int(a)):        # 取得锁        mutex.acquire()        count = count + 1        # 释放锁        mutex.release()        print threadname, x, count        time.sleep(1) def main(num):    global count, mutex    threads = []     count = 1    # 创建一个锁    mutex = threading.Lock()    # 先创建线程对象    for x in xrange(0, num):        threads.append(threading.Thread(target=thread_main, args=(10,)))    # 启动所有线程    for t in threads:        t.start()    # 主线程中等待所有子线程退出    for t in threads:        t.join()   if __name__ == '__main__':    num = 4    # 创建4个线程    main(4)####################################################################-*- encoding: gb2312 -*-import threadingimport time class Test(threading.Thread):    def __init__(self, num):        threading.Thread.__init__(self)        self._run_num = num     def run(self):        global count, mutex        threadname = threading.currentThread().getName()         for x in xrange(0, int(self._run_num)):            mutex.acquire()            count = count + 1            mutex.release()            print threadname, x, count            time.sleep(1) if __name__ == '__main__':    global count, mutex    threads = []    num = 4    count = 1    # 创建锁    mutex = threading.Lock()    # 创建线程对象    for x in xrange(0, num):        threads.append(Test(10))    # 启动线程    for t in threads:        t.start()    # 等待子线程结束    for t in threads:        t.join()在程序中,最后join()方法的调用就明白了,是主进程挨个调用子线程的join()方法。当四个线程都执行完毕后,主线程才会执行下面的代码,在这里也就是退出了。相对应的在网上一起找到的另一个方法:3.守护进程setDaemon()这个方法基本和join是相反的。当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是,只要主线程完成了,不管子线程是否完成,都要和主线程一起退出,

调用时输入参数如:  www.jb51.net/表示删除www.jb51.net首页的缓存, www.jb51.net/test.php就表示删除/test.php的缓存复制代码 代码如下:#coding=utf8import sys,osimport hashlibif len(sys.argv)<2:    print("你没有输入地址。")    sys.exit()path="/home/cache"#缓存目录md5v = hashlib.md5(sys.argv[1].encode(encoding='gb2312')).hexdigest()#得到文件的hash值onep=md5v[31:32]twop=md5v[29:31]filename=path+"/"+onep+"/"+twop+"/"+md5vif os.path.isfile(filename):    if os.remove(filename)==None:       print(filename+" ==>清除成功")    else:       print("清除失败")else:

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议。早就听说Python语言操作简单,果然名不虚传,短短几句,就实现了基本的功能。要检测目标网站上是否存在指定的URL,其实过程很简单:1、获得指定网站网页的HTML代码2、在HTML代码中查找指定的URL3、如果存在,OK;否则,Error整个程序引用了两个lib库,urllib2和sgmllib。urllib2库主要定义了一些访问URL(基本通过HTTP)的函数与类。sgmllib库主要负责解析HTML代码。import urllibfrom sgmllib import SGMLParserclass URLLister(SGMLParser):def reset(self):SGMLParser.reset(self)self.urls = []def start_a(self,attrs):href=[v for k,v in attrs if k=='href']if href:if (href[].count('http://网站URL')==):self.urls.extend(href)links = ['http://www.google.com/','http://www.baidu.com','http://www.sohu.net','http://www..com','http://www.cnblogs.com','http://www.qq.com','http://www.yahoo.com/','http://www.bing.com/','http://www..com',]for eachlink in links:f = urllib.urlopen(eachlink)if f.code ==:parser = URLLister()parser.feed(f.read())f.close()if (len(parser.urls)>=):print 'The link from '+eachlink+' is OK!'else:print 'The link from '+eachlink+' is ERROR!'这其中几个主要函数:1、urllib2.urlopen(url[, data][, timeout])//打开一个URL2、SGMLParser.feed(data) //获得需要解析的HTML数据3、SGMLParser.start_tag(attributes) //指定需要解析的HTML标签,在本程序中,我们调用了start_a,说明我们需要解析HTML代码中<a>标签。通过查找<a>标签中href属性的value,可以获得该网页上所有链接的信息,只要我们指定的URL存在,就OK了。这其实是一个很小的脚本,但也让我激动不已。一来,我已经跨进了Python的世界,并用它解决了实际工作中的问题,二来,它的简单语法、缩进格式着实让我眼前一亮。今后,希望能够多多使用Python,解决实际工作中的种种问题,做到学以致用.以上内容是针对Python检测网站链接是否已存在的相关介绍,希望对大家有所帮助!

分类:腾博会手机版下载

时间:2016-06-02 15:18:01