一、模块初识:

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员自己开发的模块

1、Python内部提供一个 sys 的模块,

① 其中的 sys.argv 用来捕获执行执行python脚本时传入的参数:

import sys

strings = sys.argv
print(strings) # 所有参数 类型为列表
# ['start.py', 'hello', 'world']
print(strings[0]) # 脚本名本身
# start.py
print(strings[1]) # 第一个参数
# hello
print(strings[2]) # 第二个参数
# world
print(strings[-1]) # 倒数第一个参数
# world $ python test.py helo world 执行脚本

② sys.stdin信息输入

读取的文件:

我越无所适从
越会事与愿违
在交错的时空
灵魂加速下坠
Here we are, here we are, here we are

lzl.txt

程序start.py:

import sys
li = []
file = sys.stdin
# <_io.TextIOWrapper name='<stdin>' mode='r' encoding='cp936'> file
for line in file:
li.append(line)
print(li)
print(line.strip()) # 这个很重要 strip去除末尾的换行符 本身print跟print直接回产生换行符
# 如果不进去去除末尾的换行符的话 会再多打印一行换行符
li =[]

执行程序: < 输入的文件  > 脚本打印的输出

python start.py < lzl.txt >test.txt

生成的文件test.txt:

['我越无所适从\n']
我越无所适从
['越会事与愿违\n']
越会事与愿违
['在交错的时空\n']
在交错的时空
['灵魂加�\udc80�下�\udca0\n']
灵魂加速下坠
['Here we are, here we are, here we are']
Here we are, here we are, here we are

test.txt

sys.stdout 重定向输出

import sys

sys.stdout.write("asdgf") # 当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n')
# asdgf

④ sys.stdout.flush 强制刷新标准输出缓存,举网上泛传的一个例子,python3中楼主没有看出其中的效果,单本楼主之前学多进程时看到过效果,那个例子找不到了;就暂且认为下面的例子看出效果了吧

import time
import sys
for i in range(5):
print(i),
sys.stdout.flush()
time.sleep(1)
# 这样设计是为了打印一个数每秒五秒钟,但如果您运行它,因为它是现在(取决于您的默认系统缓冲),
# 你可能看不到任何输出 CodeGo.net,直到再一次全部,你会看到0 1 2 3 4打印到屏幕上。
# 这是输出被缓冲,除非你sys.stdout之后每print你不会看到从输出中取出sys.stdout.flush()网上看到的差别

  

2、os模块,os模块与系统进行交互

① os.dir、os.popen调用当前系统命令:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-Author-Lian
import os #调用os模块
res = os.system("dir") #只执行命令,不保存结果
#������ C �еľ�û�б�ǩ�� #打印dir命令的结果
#�������� 50FA-4D57
#
#C:\Users\L\PycharmProjects\s14\Day2 ��Ŀ¼
#2016/08/04 10:53 <DIR> .
#2016/08/04 10:53 <DIR> ..
#2016/08/04 10:53 147 module.py
# 1 ���ļ� 147 �ֽ�
# 2 ��Ŀ¼ 35,291,541,504 �����ֽ�
print(res) #res只返会执行命令的成功与否,成功为0 反之为1
#0 res = os.popen("dir") #不打印输出,保存执行结果
print(res) #打印res内存地址信息
#<os._wrap_close object at 0x009BE570>
res = os.popen("dir").read() #通过read去读取内存地址记录的信息
print(res)
#驱动器 C 中的卷没有标签。
#卷的序列号是 50FA-4D57
#
#C:\Users\L\PycharmProjects\s14\Day2 的目录
#
#2016/08/04 11:00 <DIR> .
#2016/08/04 11:00 <DIR> ..
#2016/08/04 11:00 1,002 module.py
# 1 个文件 1,002 字节
# 2 个目录 35,291,017,216 可用字节 os.mkdir("new_dir") #在当前目录下创建新的目录new_dir

②、两者结合使用: 

import os,sys

os.system(''.join(sys.argv[1:])) #把用户的输入的参数当作一条命令交给os.system来执行

3、platform识别当前运行的系统

① 根据不同的系统创建文件的绝对路径(linux系统路径为/,windows系统路径为\)

import os,sys
import platform if platform.system() == 'Windows': #windows系统
BASE_DIR = '\\'.join(os.path.abspath(os.path.dirname(__file__)).split('\\')[:-1]) # 取当前文件目录的父目录
#school_dbpaths = os.path.join(BASE_DIR,'school_db') # 如果只要当前目录则不用split
sys.path.insert(0, BASE_DIR) #加入到系统路径 else:
BASE_DIR = '/'.join(os.path.abspath(os.path.dirname(__file__)).split('/')[:-1])
school_dbpaths =os.path.join(BASE_DIR, 'school_db') print(school_dbpaths)
# C:\Users\L\PycharmProjects\s14\homework\Day_11\rpc_client\school_db

  

二、运算符:

1、算数运算:

2、比较运算:

3、赋值运算:

4、逻辑运算:

5、成员运算:

6、身份运算:

7、位运算:

#!/usr/bin/python

a = 60            # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0 c = a & b; # 12 = 0000 1100
print "Line 1 - Value of c is ", c c = a | b; # 61 = 0011 1101
print "Line 2 - Value of c is ", c c = a ^ b; # 49 = 0011 0001
print "Line 3 - Value of c is ", c c = ~a; # -61 = 1100 0011
print "Line 4 - Value of c is ", c c = a << 2; # 240 = 1111 0000
print "Line 5 - Value of c is ", c c = a >> 2; # 15 = 0000 1111
print "Line 6 - Value of c is ", c

8、运算符优先级:

点击查看更多内容:Python运算符

Python开发【第二章】:Python模块和运算符的更多相关文章

  1. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  2. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  3. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  4. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  5. Python笔记·第二章—— Python的编码问题(一)

    一.什么是编码 可以说,计算机是一个即聪明又笨蛋的家伙.说它聪明,是因为他可以做很多事情,它的强大无需多说,大家应该都有所了解以及感受.但是为什么说它又是个笨蛋呢,因为我们在电脑上写出的每一个字,保存 ...

  6. Python自学:第二章 Python之禅

    >>print import <Python之禅>,提姆·彼得斯著 美胜于丑. 显式优于隐式. 简单胜于复杂. 复杂总比复杂好. 平的比嵌套的好. 稀疏胜于稠密. 可读性计数. ...

  7. Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  8. 简学Python第五章__模块介绍,常用内置模块

    Python第五章__模块介绍,常用内置模块 欢迎加入Linux_Python学习群  群号:478616847 目录: 模块与导入介绍 包的介绍 time &datetime模块 rando ...

  9. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  10. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

随机推荐

  1. BZOJ4444 : [Scoi2015]国旗计划

    首先将坐标离散化,因为区间互不包含,可以理解为对于每个起点输出最少需要多少个战士. 将环倍长,破环成链,设$f[i]$表示区间左端点不超过$i$时右端点的最大值,可以通过$O(n)$递推求出. 那么如 ...

  2. 用gulp替代fekit构建前端项目

    https://segmentfault.com/a/1190000003060016 离开qunar有一个多月了,在离开的时候就决定不再用fekit.做出这个决定并不是因为fekit不好,恰恰相反, ...

  3. 如何在2016年成为一个更好的Node.js开发者

    本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员.遵循本文提供的这些建议,能够让你更好的进行日常的开发工作. St ...

  4. UIView 的属性opaque详解

    该属性用法决定与该消息的接受者是否让其视图透明. 该属性的用处在于:给绘图系统提供一个性能优化开关. 当该值设计为YES,那么绘图系统会把它当作不透明看待,那么在执行绘图的时候会优化绘图一些操作,并且 ...

  5. ACM : HDU 2899 Strange fuction 解题报告 -二分、三分

    Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  6. [知识点]网络流之Edmond-Karp算法

    // 此博文为迁移而来,写于2015年2月2日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vr12.html     ...

  7. HTML5 Geolocation 构建基于地理位置的 Web 应用

    HTML5 中的新功能 HTML5 是最新一代的 HTML 规范,是 W3C 与 WHATWG 合作的结果,目前仍外于开发中.自从上一代 HTML4,Web 世界已经发生了巨大的变化,HTML5 的到 ...

  8. 【BZOJ】1110: [POI2007]砝码Odw

    题意 给定\(n\)个砝码和\(m(1 \le n, m \le 100000)\)个背包\((1 \le n_i, m_i \le 1000000000)\),保证对于任意两个砝码都有一个是另一个的 ...

  9. spring Thymeleaf 中文乱码

    前言: 项目用springmvc+Thymeleaf ,但是发现html中的所有中文都乱码. 但是自己的html的编码确定已经是UTF-8,在web.xml文件里面也添加了CharacterEncod ...

  10. 解决redhat linux下IP地址可以ping通,域名无法ping通问题

    解决redhat linux下IP地址可以ping通,域名无法ping通 在/etc/resolv.conf中添点东西 格式如下: nameserver xxx.xxx.xxx.xxx nameser ...