python编程小计

来源:互联网 发布:虚拟歌手软件 编辑:程序博客网 时间:2024/05/04 12:36

    • 3-3日小计
    • usrbin Python和usrbinenv Python
    • Python中遇到IndentationError
    • python安装第三方库
    • IO文件读写mode总结
    • stringIO读写文件问题

3-3日小计

1、昨天倒腾python+pyqt+eric就折腾了好久,最后因为版本弄了半天,
确定版本:python3.4.3+pyqt4-4.11.3+eric 5.4.0
今天尝试了一下,做简单界面基本入手很快,信号与机制也很方便,但是在自己添加自定义信号和槽的时候失败了,不知道为什么,运行修改多次也都是因为遇到0或者某种终止条件终止了,之后在研究一下,资料比较少,成功了再记录。

2、编写易错小点记录
(1)在类里面定义函数必须有self或者其他代表自身的参数,如果只有一个self参数,调用时候不会写上,自动给该参数赋值。
(2)IndentationError:expected an indented block错误解决

Python语言是一款对缩进非常敏感的语言,在编译时会出现这样的错IndentationError:expected an indented block说明此处需要缩进。
最好的方式不要使用tab键,在不同的地方它的空格数不同,!!!空格键和tab键更不能混用。
一般采用4个或者八个空格键。
python和很多语言的编程方式不同,没有大括号,选择最后的冒号,冒号不可丢,否则会报错,也不会跳行的时候帮忙缩进了。

#!/usr/bin/ Python和#!/usr/bin/env Python

在mac和linux中使用,让脚本可以像exe一样运行,第一行加入这句话,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单

#!/usr/bin/Python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python相当于写死了python路径;
#!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法

Python的交互模式和直接运行.py文件有什么区别呢?

直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。

直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。

用Python开发程序,完全可以一边在文本编辑器里写代码,一边开一个交互式命令窗口,在写代码的过程中,把部分代码粘到命令行去验证,事半功倍!前提是得有个27’的超大显示器!

Python中遇到IndentationError

以后第一时间就要想到,是不是由于TAB键和空格混搭使用了。

估计很多人也都是此类原因导致的。记得统一一下就好。在Notepad++中,去:
设置->首选项:语言->以空格取代(TAB键):
摘抄自:http://www.crifan.com/python_syntax_error_indentationerror/comment-page-1/

python安装第三方库

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143186362353505516c5d4e38456fb225c18cc5b54ffb000评论中提供的方式。谢谢
1.python程序可以直接从网上更新相应的模块,不要去下载一些.exe程序,很可能不成功,直接更新是最好的。
2.首先更新pip
方法:在windows启动CMD窗口,输入python -m pip install –upgrade pip 点击回车即可。
3.pip更新完成以后,同样的cmd窗口,输入pip install Pillow 回车即可。(Pillow库安装成功)

==》 ‘pip’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
http://stackoverflow.com/questions/12878615/python-pip-command-is-not-recognized

Go to C:\Python27\Scripts(其实就是在安装目录的script目录下有pip)

Now select the url bar and replace whole content with cmd

This way you directly reach to the directory where pip is available in command prompt

Now type pip install Django==1.8.5 it will download and install Djanog

I/O文件读写mode总结

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+ 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

==》问题:想知道a+、w+、r+,怎么实现读写的,为什么我用a+,依然只是追加写,读不出来呢?
==》解决:

with open('test_out.txt', mode='a+') as f:    print(f.tell())  # 这种方法简单地返回文件的当前位置读/写指针在文件.    f.seek(0)  # 指定文件读取指针的位置为0    print(f.read())    f.write("append something")

通过 f.seek(0) 指定读取开始位置就可以了
==》提示

读写文件最好做到:要么读,要么写,代码简单,性能高顺序读/写,不要seek,性能高所以一般只需要用r, rb, w, wb就够了

stringIO读写文件问题

from io import StringIO;f = StringIO();f.write('Hello World');s = f.readline();print s;上面这种方法无论如何都读不出f的内容,使用readlines和循环也不行from io import StringIO;f = StringIO('Hello World');s = f.readline();print s;上面是文中介绍的先初始化一个stringIO流,然后readline读取内容,这样就可以为什么会这样呢?

答案

是因为the stream position的原因,当你用:d = StringIO('Hello World')其stream position为0(可以通过d.tell()获得),而后执行d.readline()stream position移动到11.因此在执行此方法时,返回的是空字符串。类似的,使用f = StringIO()stream position也为0,而执行f.write('Hello World')stream position就移动到11了,因此你再执行readline时返回的依旧是空字符串,若你需要返回'Hello World'可以通过f.seek(0)调整stream position即可。
0 0