{"id":1614,"date":"2014-11-20T14:02:55","date_gmt":"2014-11-20T14:02:55","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=1614"},"modified":"2014-11-20T14:02:55","modified_gmt":"2014-11-20T14:02:55","slug":"python%e7%9a%84%e4%b8%80%e4%ba%9b%e5%b0%8f%e7%9f%a5%e8%af%86%e7%82%b9_3","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/1614.html","title":{"rendered":"Python\u7684\u4e00\u4e9b\u5c0f\u77e5\u8bc6\u70b9_3"},"content":{"rendered":"<h5>\u68c0\u67e5\u6307\u5b9a\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff1a<\/h5>\n<pre class=\"lang:default decode:true\">import os\nos.path.isfile(fname)\n\nimport os.path\nos.path.exists(file_path)<\/pre>\n<h5>list\u5408\u5e76\u7684\u65b9\u6cd5\uff1a<\/h5>\n<pre class=\"lang:default decode:true\">mergedlist = listone + listtwo<\/pre>\n<p><strong>\u53c2\u8003<\/strong>\uff1a<a href=\"http:\/\/stackoverflow.com\/questions\/1720421\/merge-two-lists-in-python\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/1720421\/merge-two-lists-in-python<\/a><\/p>\n<h5>Python\u4e2dlist\u548ctuple\u7684\u4e0d\u540c\uff1a<\/h5>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/626759\/whats-the-difference-between-list-and-tuples\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/626759\/whats-the-difference-between-list-and-tuples<\/a><\/li>\n<li>\u5b98\u65b9\u8bf4\u660e\uff1a<a href=\"https:\/\/docs.python.org\/2\/tutorial\/datastructures.html#tuples-and-sequences\" target=\"_blank\">ttps:\/\/docs.python.org\/2\/tutorial\/datastructures.html#tuples-and-sequences<\/a><\/li>\n<li><a href=\"http:\/\/jtauber.com\/blog\/2006\/04\/15\/python_tuples_are_not_just_constant_lists\/\" target=\"_blank\">http:\/\/jtauber.com\/blog\/2006\/04\/15\/python_tuples_are_not_just_constant_lists\/<\/a><\/li>\n<li><a href=\"http:\/\/news.e-scribe.com\/397\" target=\"_blank\">E-Scribe : Understanding tuples vs. lists in Python<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/6063494\/python-efficiency-lists-vs-tuples\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/6063494\/python-efficiency-lists-vs-tuples<\/a><\/li>\n<\/ul>\n<h5>Python\u8fd4\u56de\u5185\u5bb9\u7684\u4e00\u4e9btips\uff1a<\/h5>\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/363944\/python-idiom-to-return-first-item-or-none\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/363944\/python-idiom-to-return-first-item-or-none<\/a><\/p>\n<h5>Python\u7684idioms\uff1a<\/h5>\n<p><a href=\"http:\/\/stackoverflow.com\/search?tab=votes&amp;q=python%20idioms\" target=\"_blank\">http:\/\/stackoverflow.com\/search?tab=votes&amp;q=python%20idioms<\/a><\/p>\n<h5>Python\u7684Luhn\u7b97\u6cd5\u5b9e\u73b0\uff1a<\/h5>\n<pre class=\"lang:default decode:true \">def luhn_checksum(card_number):\n    def digits_of(n):\n        return [int(d) for d in str(n)]\n    digits = digits_of(card_number)\n    odd_digits = digits[-1::-2]\n    even_digits = digits[-2::-2]\n    checksum = 0\n    checksum += sum(odd_digits)\n    for d in even_digits:\n        checksum += sum(digits_of(d*2))\n    return checksum % 10\n\ndef is_luhn_valid(card_number):\n    return luhn_checksum(card_number) == 0<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Luhn_algorithm\" target=\"_blank\">http:\/\/en.wikipedia.org\/wiki\/Luhn_algorithm<\/a><\/li>\n<li><a href=\"http:\/\/zh.wikipedia.org\/wiki\/Luhn%E7%AE%97%E6%B3%95\" target=\"_blank\">Luhn\u7b97\u6cd5<\/a><\/li>\n<\/ul>\n<hr \/>\n<h5>\u5982\u4f55\u83b7\u53d6Python\u7684\u8fed\u4ee3\u5668\u7684\u957f\u5ea6<\/h5>\n<p>\u521a\u624d\u5728\u770b\u626b\u63cfMongoDB\u7684\u672a\u6388\u6743\u8fde\u63a5\u7684\u4ee3\u7801\u65f6\uff0c\u770b\u5230\u7684\u4e00\u6bb5\u751f\u6210\u5b57\u5178\u7684Python\u7247\u6bb5\uff0c\u5f88\u7ed9\u529b\u554a\uff0c\u7528\u5230\u4e86Python\u7684\u8fed\u4ee3\u5668\uff08itertools\uff09\uff0c\u7136\u540e\u5728\u9a8c\u8bc1\u811a\u672c\u6548\u679c\u7684\u65f6\u5019\u76f4\u63a5\u7528\u4e86len()\u51fd\u6570\uff0c\u6ca1\u60f3\u5230\u4f1a\u62a5\u9519\u201c<span style=\"color: #ff0000;\">TypeError: object of type &#8216;generator&#8217; has no len()<\/span>\u201d<\/p>\n<p>\u7f51\u4e0a\u641c\u7d22\u4e86\u4e4b\u540e\u627e\u5230\u89e3\u51b3\u529e\u6cd5\uff0c\u503c\u5f97\u8bb0\u5f55\u4e00\u4e0b\uff1a<br \/>\n<a href=\"http:\/\/cn.bing.com\/search?q=type+%27generator%27++len%28%29\" target=\"_blank\">http:\/\/cn.bing.com\/search?q=type+%27generator%27++len%28%29<\/a><\/p>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/364802\/generator-comprehension\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/364802\/generator-comprehension<\/a><\/li>\n<li><a href=\"http:\/\/blog.csdn.net\/zlchina1989\/article\/details\/6575257\" target=\"_blank\">python \u8fed\u4ee3\u5668\u7684\u957f\u5ea6\u83b7\u53d6\u65b9\u6cd5<\/a><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">import itertools\ndef genBrute(chars, maxLen):\n    return (''.join(candidate) for candidate in itertools.chain.from_iterable(itertools.product(chars, repeat=i) for i in range(1, maxLen + 1)))\n\n#print len(genBrute(chainSet,int(maxLen)))   # TypeError: object of type 'generator' has no len()\nprint len( list(genBrute(chainSet,int(maxLen))) )<\/pre>\n<h5>\u6253\u5370list\/tuple\u7b49\u53ef\u8fed\u4ee3\u5bf9\u8c61(iterable)\u7684\u4e00\u4e2atips<\/h5>\n<pre class=\"lang:default decode:true\">print \"List of databases:\"\nprint \"n\".join(dbList)\n\n#\u4e4b\u524d\u7684\u65b9\u6cd5\u662f\u624b\u52a8for\u5faa\u73af\uff1a\nfor item in dbList:\n    print item\n'''\n\u4f46\u662f\u5b58\u5728\u7684\u95ee\u9898\u5728\u4e8e\uff1a\n1.\u4ee3\u7801\u4e0d\u591f\u7b80\u77ed\uff1b\n2.\u6ca1\u6cd5\u6307\u5b9a\u5206\u9694\u7b26(\u867d\u7136\u53ef\u4ee5\u5728'print item'\u540e\u9762\u6dfb\u52a0\u4e00\u4e2a\u9017\u53f7\uff0c\u4f46\u4e0d\u591f\u65b9\u4fbf)\n'''<\/pre>\n<h5>\u5728Python\u4e2d\u5982\u4f55\u5224\u5b9a\u4e00\u4e2a\u5bf9\u8c61\u662f\u5426\u4e3a\u53ef\u8fed\u4ee3\uff08iterable\uff09\u7684\uff1f<\/h5>\n<p>\u5224\u5b9a\u65b9\u6cd5\u5c31\u662f\uff1a<br \/>\n1.iter()\u51fd\u6570<br \/>\n2.hasattr(object_name, &#8216;__iter__&#8217;)<br \/>\n3.\u5f15\u5165collections\u4e2d\u7684\u65b9\u6cd5<\/p>\n<pre class=\"lang:default decode:true\">import collections\nif isinstance(theElement, collections.Iterable):\n     # iterable\nelse:\n     # not iterable<\/pre>\n<pre class=\"lang:default decode:true\">#TODO:\u5bf9\u5927\u6587\u4ef6\u7684\u5904\u7406\uff08\u4e0d\u8bfb\u81f3\u5185\u5b58\uff0c\u6162\u6162\u8fed\u4ee3\uff09\ndef fileToList(fileName):\n    lineList = []\n    try:\n        fileParser = open(fileName, 'r')\n    except IOError as ioerr:\n        print \"[!] open file error: n   \" + str(ioerr)\n    except:\n        print \"[!] can't access the file: %s \" % fileName\n    for line in fileParser:\t\t'''' \u5728Python\u4e2d\u5982\u4f55\u5224\u65ad\u4e00\u4e2a\u5bf9\u8c61\u662f\"\u53ef\u8fed\u4ee3\u7684\" '''\n        newLine = line.strip()\n        lineList.append(newLine)\n    fileParser.close()\nreturn lineList<\/pre>\n<h6>\u53c2\u8003\u94fe\u63a5\uff1a<\/h6>\n<ul>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/1952464\/in-python-how-do-i-determine-if-an-object-is-iterable\" target=\"_blank\">In Python, how do I determine if an object is iterable? &#8211; Stack Overflow<\/a><\/li>\n<li><a href=\"http:\/\/stackoverflow.com\/questions\/9884132\/understanding-pythons-iterator-iterable-and-iteration-protocols-what-exact\" target=\"_blank\">Understanding Python&#8217;s iterator, iterable, and iteration protocols &#8212; what exactly are they? &#8211; Stack Overflow<\/a><\/li>\n<li><a href=\"https:\/\/docs.python.org\/2\/reference\/datamodel.html#object.__iter__\" target=\"_blank\">https:\/\/docs.python.org\/2\/reference\/datamodel.html#object.__iter__<\/a><\/li>\n<li><a href=\"https:\/\/docs.python.org\/2\/library\/stdtypes.html#iterator-types\" target=\"_blank\">https:\/\/docs.python.org\/2\/library\/stdtypes.html#iterator-types<\/a><\/li>\n<\/ul>\n<h5>\u7528Python\u53d1\u9001\u90ae\u4ef6_1<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# coding=utf-8\nimport smtplib\nfrom email.Message import Message\nimport time\n\ndef sendMail(user, passwd):\n    systemTime=time.strftime('%Y-%m-%d',time.localtime(time.time()))\n    try:\n        fileObj=open(r\"F:xianguo.opml\", \"r\")\n        content=fileObj.read()\n    except:\n        print \"Cannot read filen\"\n        exit()\n    message = Message()\n    message['Subject'] = 'Connect test'\n    message['From'] = user\n    message['To'] = \"10001@qq.com\"\n    message.set_payload(\"The time ist\"+systemTime+\"n\"+content)\n    msg = message.as_string()\n\n    smtp = smtplib.SMTP(\"smtp.126.com\", port=25, timeout=20)\n    #sm.set_debuglevel(1)   #\u5f00\u542fdebug\u6a21\u5f0f\n    #smtp.starttls()        #\u4f7f\u7528\u5b89\u5168\u8fde\u63a5\n    #smtp.ehlo()\n    smtp.login(user, passwd)\n    smtp.sendmail(user, \"10001@qq.com\", msg)\n    time.sleep(5)   #\u907f\u514d\u90ae\u4ef6\u6ca1\u6709\u53d1\u9001\u5b8c\u6210\u5c31\u8c03\u7528\u4e86quit()\n    smtp.quit()\n\nif __name__==\"__main__\":\n    emailName=\"xxx@126.com\"\n    emailPasswd=\"haha,man.\"\n    sendMail(emailName, emailPasswd)<\/pre>\n<h5>\u7528Python\u53d1\u9001\u90ae\u4ef6_2<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# coding = utf-8\nimport smtplib\nfrom email.mime.text import MIMEText\nimport urllib2\nimport json\nimport time\n\nurl = \"http:\/\/www.v2ex.com\/api\/topics\/hot.json\"\nuser_name = \"xxx@126.com\"\npasswd = \"password\"\nsmtp_serv = \"smtp.126.com\"\nsend_to = \"xxx@163.com\"\n\nclass SendMail:\n    def __init__(self, username, passwd, serv_addr):\n        self.__username = username\n        self.__passwd = passwd\n        self.__serv = smtplib.SMTP(serv_addr, port=25, timeout=20)\n\n    def __login(self):\n        self.__serv.login(self.__username, self.__passwd)\n\n    def sendmsg(self, mail_to, subject, content):\n        self.__login()\n        msg = MIMEText(content)\n        msg['Subject'] = subject\n        msg['From'] = self.__username\n        msg['To'] = mail_to\n        self.__serv.sendmail(self.__username, mail_to, msg.as_string())\n        self.__serv.quit()\n\ndef build_msg():\n    res = urllib2.urlopen(url).read()\n    json_res = json.loads(res)\n    msg = []\n    id = 0\n    for top in json_res:\n        id = id + 1\n        msg.append(str(id)+\": \")\n        msg.append(top['url'].encode('utf-8'))\n        msg.append(\"rnrn\")\n        msg.append(\"Title:  \")\n        msg.append(top['title'].encode('utf-8'))\n        msg.append(\"rnrn\")\n        msg.append(\"Content:  \")\n        msg.append(top['content'].encode('utf-8'))\n        msg.append(\"rnrn\")\n    return msg\n\nif __name__ == \"__main__\":\n    send = SendMail(user_name, passwd, smtp_serv)\n    today = time.strftime(\"%Y-%m-%d\", time.localtime(time.time()))\n    title = \"v2ex top 10 @ \" + today\n    print title\n    msg = build_msg()\n    str_msg = ''.join(msg)\n    send.sendmsg(send_to, title, str_msg)<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u68c0\u67e5\u6307\u5b9a\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff1a import os os.path.isfile(fname) import os.p [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,7,12],"tags":[8,396,19],"class_list":["post-1614","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-programing","category-tools","tag-python","tag-smtplib","tag-tips"],"views":4725,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/1614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=1614"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/1614\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=1614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=1614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=1614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}