1、#coding=utf-8,只能放在第1,2行中
比如在第3行 程序就出错了,其他编码方式也一样。若放在第三行,则编码格式不生效:
2、python3.6报错:AttributeError: 'str' object has no attribute 'decode'
错误源代码: class_list.append(folder.decode('utf-8')) ;修改方法:把decode改为encode即可。
3、set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等
4、三个引号 """ 可输出多行字符,但若使用单引号或者双引号则需要使用换行符\n
5、格式化字符:
%r 打印出来的是你写在脚本里的内容,而 %s 打印的是你应该看到的内容。
%r 显示变量的原始数据
%s 打印字符串
%d 打印整数
%f 打印浮点数 指定保留小数点位数
6、f.readline()读取一行,会自动往下走一行,若还想获取刚才读取的行,则可使用函数
7、__init__.py:如果目录中存在该文件,该目录就会被识别为 module package
实际上,如果目录中包含了 __init__.py 时,当用 import 导入该目录时,会执行 __init__.py 里面的代码。
8、dict.get:
如:dict.get("north","None"),若dict中无north这个key,则直接输出None
9、获取文件路径
curPath= os.path.abspath(os.path.dirname(__file__)) #获取文件所在目录的路径
path =os.path.dirname(os.path.abspath(__file__)) # 当前文件的目录路径
path2 = os.path.abspath(os.path.dirname(__file__)) # 当前文件的目录路径
path3 = os.path.dirname(__file__) # 当前文件的目录路径
path4 = os.path.abspath(__file__) # 当前文件的绝对路径
path5 = os.path.split(path3)[0] # 当前文件的父父路径
path6 = os.path.dirname(os.path.abspath(".")) #
print (path)
print (path2)
print (path3)
print (path4)
print (path5)
print (path6)
输出结果:
D:\Python35\project\testStub\testsuits
D:\Python35\project\testStub\testsuits
D:/Python35/project/testStub/testsuits
D:\Python35\project\testStub\testsuits\my_email.py
D:/Python35/project/testStub
D:\Python35\project\testStub
os.path.dirname():去掉脚本的文件名,返回目录。
os.path.dirname(os,path.realname(__file__)):指的是,获得你刚才所引用的模块 所在的绝对路径,__file__为内置属性 功能相当于os.path.split(os.path.realpath(__file__))[0]
10、时间
time.ctime(time.time())
输出结果:
11、日志
logging.getLogger([name=None])
指定name,返回一个名称为name的Logger实例。如果再次使用相同的名字,是实例化一个对象。未指定name,返回Logger实例,名称是root,即根Logger。
Logger是层次结构的,使用 '.' 点号分割,如'a'、'a.b'或'a.b.c.d','a'是'a.b'的父parent,a.b是a的子child。对于foo来说,名字为foo.bar、foo.bar.baz、foo.bam都是foo的后代。
12、sys.argv[]
sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。
13、os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:
假设目录结构是:
C:\test
|
[dir] getpath
|
[file] path.py
[dir] sub
|
[file] sub_path.py
然后我们在C:\test下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:
os.getcwd() “C:\test”,取的是起始执行目录
sys.path[0]或sys.argv[0] “C:\test\getpath”,取的是被初始执行的脚本的所在目录
os.path.split(os.path.realpath(__file__))[0] “C:\test\getpath\sub”,取的是__file__所在文件sub_path.py的所在目录
14、1)、split()函数
语法:str.split(str=" ",num=string.count(str))[n]
参数说明:
str: 表示为分隔符,默认为空格,但是不能为空串。若字符串中没有分隔符,则把整个字符串作为列表的一个元素。
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串。
[n]: 表示选取第n个分片(从0计数)
默认情况下,使用空格作为分隔符,则分隔后,空串会自动忽略,如:
>>> s='love python'
>>> s.split()
['love', 'python']
但若显式指定空格为分隔符,则不会自动忽略空串,如:
>>> s.split(' ')
['love', '', '', '', 'python']
2)、os.path.split()函数
语法:os.path.split('PATH')
参数说明:
PATH指一个文件的全路径作为参数:
如果给出的是一个目录和文件名,则输出路径和文件名
如果给出的是一个目录名,则输出路径和为空文件名
15、python的执行顺序
16、读取文件,格式问题
读取xml文件时,xml里面包含有中文,所以要使用utf-8格式读取,若xml文档中有声明:
若xml开头无声明:
执行语句:DOM = xml.dom.minidom.parse(single_file_path)则报编码错误:
not well-formed (invalid token): line 1, column 1
修改方法:在读取xml前进行编码置换:single_file_path.encode('utf8')
17、python3 引入HTMLTestRunner
下载HTMLTestRunner.py文件,地址为:
http://tungwaiyip.info/software/HTMLTestRunner.html
具体改动如下:
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= StringIO()
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s’%(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s’ % (self.stopTime-self.startTime))
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第767行,将uo = o.decode(‘latin-1’)修改成uo = e
第775行,将ue = e.decode(‘latin-1’)修改成ue = e
第779行,将output = saxutils.escape(uo+ue),修改成output = saxutils.escape(str(uo)+str(ue)),
第687行:改为如下:
self.stream.write(output.encode())
注意:行数可能因为版本不同出现略微误差
将上述几处改动,保存成功后,再将HTMLTestRunner.py放到C:\Python36\Lib目录中,
检验是否加载成功,在Python IDLE 中输入
import HTMLTestRunner
若无报错,那么加载成功。
18、1)字符串转换成list:
2)list转换成字符串
命令:"".join(list)
其中,引号中是字符之间的分割符,如“,”,“;”,“\t”等等