• Python pause 暂停程序执行

    废话不多说了,两种基本解决方案如下:

    1.  使用os库方法

    import os

    os.system('PAUSE')     #注意 PAUSE 必须大写

     

    2. 接收一个输入

    raw_input('Press any key and Enter to continue ~!')

     

  • Python Scrapy抓取数据中文存utf8乱码问题

    继 http://blog.wdoc.info/note/79.html (在回调函数中加载新页面XPath)之后

    最近出现了 网页GB2312编码,无法正常转换为utf8存入数据库的问题

     网上大肆搜寻一番,说的编码转换一一试过,似乎问题不太好解决

    于是直接在命令行下 使用python    >>>scrapy shell  http://my.test.url

     加载页面之后输出类容 来看了下 (截取了一部分)测试片段 如下

    >>>tt = "\xe6\x98\xaf\xe4\xb8\x80\xe5\xae\xb6\xe4\xb8\x93\xe4\xb8\x9a\xe9\x94\x80\xe5\x94\xae\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aUPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe7\x9b\xb4\xe6\xb5\x81\xe5\xb1\x8f\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aEPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe5\xa4\xaa\xe9\x98\xb3\xe8\x83\xbd\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe8\x83\xb6\xe4\xbd\x93\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xef\xbc\x8c\xe5\x8c\x85\xe6\x8b\xac\xe5\xae\x89\xe8\xa3\x85\xe3\x80\x81\xe8\xb0\x83\xe8\xaf\x95\xe5\x8f\x8a\xe7\xbb\xb4\xe4\xbf\xae..."

    >>>print tt  

    直接乱码

    >>>print tt.decode('utf8','ignore')

    显示正常中文(ignore 在解码过程中直接忽略异常编码)

    但是在Scrapy中

    temp = urllib2.urlopen(newurl) #请求
    temp = temp.read() #读数据

    temp = temp.decode('utf8','ignore') # 这样会提示找不到默认编码...
    newresponse = HtmlResponse(newurl)
    newresponse._set_body(temp)

    于是最终解决方案

    temp = temp.decode('utf8','ignore').encode('gbk') 

     

    #过程比较潦草,仅做记录  欢迎指正

    #如果对python 如何使用Scrapy加载网页不熟悉的朋友,请先参阅 http://blog.vsfor.com/note/79.html

     

  • Python操作文件及文件目录常用方法(他山之石)

    注意:Windows环境下操作的过程中需要注意目录的分隔符为 \ 所以通常需要对路径分隔符做转义处理

    源自: http://hi.baidu.com/pythond/item/c6bc99491cfb0be9a5c066a8

    python 操作windows下的目录


    python操作目录、文件相关的函数,在os模块中,当然或许也有别的模块提供了更方便的函数
    以下列出的所有函数均亲自测试过!

    1、os.getcwd()         os.chdir(dir)      #获取当前目录 ,改变当前目录为dir

    2、os.listdir(dir)        #获取目录内容,其结果为list类型

    3、os.mkdir(dir)        #创建目录

    4、os.rmdir(dir)         # 删除空目录,如果目录中有内容,则出错

    5、os.path.isdir(dir)                    #判断是否为目录

    6、os.path.isfile(file)                   #判断是否为文件

    7、os.path.isabs(path)               #判断是否为绝对路径

    8、os.path.abspath(path)           #取得绝对路径

    9、os.path.dirname(path)           #取得父目录

    10、os.path.exists(path)            #判断目录或文件是否存在

    11、os.path.getsize(path)          #取得文件大小

    12、os.path.getctime(path)   getmtime(path) getatime()      #取得文件的创建、修改、最后存储的时间

    #不过取得是浮点数,需要用time模块中的time.ctime(float) 或time.localtime(float)转换成可识别的格式

    13、os.path.split(path)             #分割路径,结果为元组,如(‘c:\\windows','system32')

    14、os.path.splitext(path)        #分割扩展名,结果如 (‘c:\\windows\\system32\\cmd','.exe')

    15、os.rename(file1,file2)         #将file1文件更名为file2文件

    16、os.remove(file)                  #删除file文件

    17、os.walk(path,topdown) #目录遍历

    一下是调用os.walk的例子,遍历指定的目录

    def walk_dir(dir, topdown=True):
        for root, dirs, files in os.walk(dir, topdown):
            for name in files:
                print(os.path.join(root, name))
            for name in dirs:
                print(os.path.join(root, name))


    glob模块

    glob.glob("*.py")                    #返回当前目录下所有以.py为后缀的目录或文件


    shutil模块

    shutil.copyfile(src,dst)             #拷贝文件

    shutil.copystat(src,dst)           #拷贝文件,连同文件的stat一起拷贝

    shutil.copytree(src,dst)           #拷贝目录,拷贝之前dst必须不存在

  • 如何在CMD-DOS窗口中显示UTF-8中文字符(他山之石)

    原文转自(http://blog.sina.com.cn/s/blog_794b1d96010136yy.html)

    在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。

    如果想正确显示UTF-8字符,可以按照以下步骤操作:

    1、打开CMD.exe命令行窗口

    2、通过 chcp命令改变代码页,UTF-8的代码页为65001

    chcp 65001

    执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。

    3、修改窗口属性,改变字体

    在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。

    这时使用type命令就可以显示UTF-8文本文件的内容了:

    type filename.txt

    4、通过以上操作并不能完全解决问题,因为显示出来的内容有可能不完全。可以先最小化,然后最大化命令行窗口,文件的内容就完整的显示出来了。

    //补充

    dos指令:

    chcp 65001 就是换成UTF-8代码页

    chcp 936 可以换回默认的GBK

    chcp 437 是美国英语

    CMD使用命令chcp:

    功能: 
    显示或设置活动代码页编号

      CHCP [nnn]
      nnn 指定代码页编号。
      不加参数键入 CHCP 显示活动代码页编号。
      nnn指定一已有的系统字符集,该字符集在CONFIG.SYS文件中由COUNTRY命令定义。
      在DOS下可以通过mode命令来设置代码页。
      选定代码页: MODE CON[:] CP SELECT=yyy
      代码页状态: MODE CON[:] CP [/STATUS]
      按Windows+R组合键,然后输入cmd或者command打开命令提示符。
      比如输入:mode con cp select=936,则表示显示简体中文。如果输入mode con cp select=437,则表示显示MS-DOS 美国英语,而中文显示将会是?。
      MS-DOS为以下国家和语言提供字符集:
      代码页 描述
      1258 越南语
      1257 波罗的语
      1256 阿拉伯语
      1255 希伯来语
      1254 土耳其语
      1253 希腊语
      1252 拉丁 1 字符 (ANSI)
      1251 西里尔语
      1250 中欧语言
      950 繁体中文
      949 朝鲜语
      936 简体中文(默认)
      932 日语
      874 泰国语
      850 多语种 (MS-DOS Latin1)
      437 MS-DOS 美国英语

  • css样式中文字体(font-family)的英文名称(它山之石)

    Mac OS的一些:
    华文细黑:STHeiti Light [STXihei]  华文黑体:STHeiti  华文楷体:STKaiti  华文宋体:STSong  华文仿宋:STFangsong  儷黑 Pro:LiHei Pro Medium  儷宋 Pro:LiSong Pro Light  標楷體:BiauKai  蘋果儷中黑:Apple LiGothic Medium  蘋果儷細宋:Apple LiSung Light 

    Windows的一些: 
    新細明體:PMingLiU  細明體:MingLiU  標楷體:DFKai-SB  黑体:SimHei  宋体:SimSun  新宋体:NSimSun  仿宋:FangSong  楷体:KaiTi  仿宋_GB2312:FangSong_GB2312  楷体_GB2312:KaiTi_GB2312  微軟正黑體:Microsoft JhengHei  微软雅黑体:Microsoft YaHei 
      
    装Office会生出来的一些: 
    隶书:LiSu  幼圆:YouYuan  华文细黑:STXihei  华文楷体:STKaiti  华文宋体:STSong  华文中宋:STZhongsong  华文仿宋:STFangsong 方正舒体:FZShuTi  方正姚体:FZYaoti  华文彩云:STCaiyun  华文琥珀:STHupo  华文隶书:STLiti  华文行楷:STXingkai  华文新魏:STXinwei 

    Windows 中的中文字体。
     在默认情况下,也就是未自行安装新字体或者 Office 等文字处理软件的情况下,Windows 默认提供下列字体:
    Windows 95/98/98SE 宋体、黑体、楷体_GB2312、仿宋_GB2312 Windows XP/2000/2003/ME/NT 宋体/新宋体、黑体、楷体_GB2312、仿宋_GB2312 (Windows XP SP3 宋体-PUA)
    Windows Vista/7/2008 宋体/新宋体、黑体、楷体、仿宋、微软雅黑、SimSun-ExtB 
    那么每种字体能显示那些汉字呢?
    Vista 之前的 Windows 中宋体/新宋体、黑体支持 GBK 1.0 字符集, 楷体_GB2312、仿宋_GB2312 支持 GB2312-80 字符集。 (注:Windows 3.X 只能支持 GB2312-80 字符集)
     
    Vista 及之后的 Windows 中宋体/新宋体、黑体、楷体、仿宋、微软雅黑支持 GB18030-2000 字符集,
    SimSun-ExtB 只支持 GB18030-2005 字符集扩展 B 部分。 
    下面对字符集进行简单的介绍:
    GB2312-80 < GBK 1.0 < GB18030-2000 < GB18030-2005
    GB2312-80 中的字符数量最少,GB18030-2005 字符数量最多。 GB2312-80 是最早的版本,字符数比较少;
    GBK 1.0 中的汉字大致与 Unicode 1.1 中的汉字数量相同;
    GB18030-2000 中的汉字大致与 Unicode 3.0 中的汉字数量相同,主要增加了扩展 A 部分; GB18030-2005 中的汉字大致与 Unicode 4.1 中的汉字数量相同,主要增加了扩展 B 部分; 由于 Unicode 5.2 的发布,估计 GB18030 会在近期发布新版本,增加扩展 C 部分。 需要说明的是在 GB18030 中扩展 B 部分并不是强制标准。
    如果想查看 GB18030 的标准文本,请访问 http://www.gb168.cn 中的强标阅读。  如果想了解 Unicode 的内容,请访问 http://www.unicode.org。 
    现在纠正网上普遍的一个错误:
    GB18030-2000 和 GB18030-2005 都不支持单字节的欧元符号  
    与简体中文有关的代吗页如下:
    936 gb2312 简体中文(GB2312)----其实是GBK
    10008 x-mac-chinesesimp 简体中文(Mac)

click
©2010-2019 Jeen All Rights Reserved.Powered by emlog