python编写注意点

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”等等

猜你喜欢

转载自blog.csdn.net/wdlnancy/article/details/87008133
今日推荐