Python QuickStart

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(Modules)
(Matplotlib)
(未显示1个用户的28个中间版本)
第1行: 第1行:
 
== Quick Start ==
 
== Quick Start ==
  
Install python2.7 from https://www.python.org/downloads/
+
* Install python3.8 from https://www.python.org/downloads/
 +
** Windows: https://www.python.org/ftp/python/3.8.1/python-3.8.1-amd64.exe
 +
** Mac OS X: https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg
  
  
第15行: 第17行:
  
 
<source lang=bash>
 
<source lang=bash>
$ sudo pip install numpy
+
$ sudo pip3 install numpy pandas matplotlib
$ sudo pip install tensorflow
+
$ sudo pip3 install scipy
 +
$ sudo pip3 install tensorflow
 
</source>
 
</source>
 +
 +
 +
[https://www.jianshu.com/p/91365f343585 Jupyter Notebook介绍、安装及使用教程]
  
 
<br><br>
 
<br><br>
第289行: 第295行:
 
== Matplotlib ==
 
== Matplotlib ==
  
 +
* [https://matplotlib.org/gallery/index.html Gallery]
 
* [https://matplotlib.org/users/dflt_style_changes.html Change the Colors] Changes to the default style
 
* [https://matplotlib.org/users/dflt_style_changes.html Change the Colors] Changes to the default style
 
* [https://matplotlib.org/gallery/axes_grid1/demo_fixed_size_axes.html Demo Fixed Size Axes]
 
* [https://matplotlib.org/gallery/axes_grid1/demo_fixed_size_axes.html Demo Fixed Size Axes]
 
* [https://matplotlib.org/gallery/subplots_axes_and_figures/multiple_figs_demo.html Multiple Figs Demo]
 
* [https://matplotlib.org/gallery/subplots_axes_and_figures/multiple_figs_demo.html Multiple Figs Demo]
 +
* [https://matplotlib.org/gallery/text_labels_and_annotations/usetex_demo.html Usetex Demo]
 +
* [https://matplotlib.org/gallery/text_labels_and_annotations/text_fontdict.html Controlling style of text and labels using a dictionary]
 
* [https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html matplotlib.pyplot.plot()]
 
* [https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html matplotlib.pyplot.plot()]
 +
* [https://matplotlib.org/api/_as_gen/matplotlib.pyplot.figure.html matplotlib.pyplot.figure()]
  
 +
* [https://matplotlib.org/gallery/text_labels_and_annotations/annotation_demo.html Annotating Plots]
 +
* [https://matplotlib.org/tutorials/introductory/customizing.html Customizing Matplotlib with style sheets and rcParams ]
 +
 +
<br>
 +
 +
=== bar ===
 +
 +
* [https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html#matplotlib.pyplot.bar matplotlib.pyplot.bar]
 +
* [https://matplotlib.org/api/_as_gen/matplotlib.pyplot.annotate.html#matplotlib.pyplot.annotate matplotlib.pyplot.annotate]
 +
 +
<source lang=python>
 +
def currency(x, pos):
 +
    """The two args are the value and tick position"""
 +
    if x >= 1e6:
 +
        s = '${:1.1f}M'.format(x*1e-6)
 +
    else:
 +
        s = '${:1.0f}K'.format(x*1e-3)
 +
    return s
 +
 +
formatter = FuncFormatter(currency)
 +
 +
fig, ax = plt.subplots(figsize=(6, 8))
 +
ax.xaxis.set_major_formatter(formatter)
 +
</source>
 +
 +
<br>
 +
 +
=== hist ===
 +
 +
* [https://matplotlib.org/gallery/statistics/histogram_cumulative.html?highlight=cdf hist.cdf]
  
 
<br>
 
<br>
第369行: 第409行:
 
print(resp)
 
print(resp)
 
</source>
 
</source>
 +
  
 
使用post方式时,数据放在 data 或者 body 中:
 
使用post方式时,数据放在 data 或者 body 中:
第386行: 第427行:
 
</source>
 
</source>
  
Reference: https://blog.csdn.net/lovemysea/article/details/77776299
+
 
 +
'''Python3:'''
 +
 
 +
<source lang=python>
 +
import urllib.request as http
 +
 
 +
resp = http.urlopen('http://iot.xxx.net')
 +
# print(resp.info())
 +
resp.read()
 +
resp.close()
 +
</source>
 +
 
 +
Reference: https://docs.python.org/3.8/library/urllib.request.html#module-urllib.request
 +
 
 +
* https://www.jianshu.com/p/491d6590b2a0
  
 
<br>
 
<br>
第394行: 第449行:
 
<br>
 
<br>
  
== Object Oriented ==
+
=== PDF ===
 +
 
 +
* https://github.com/jsvine/pdfplumber
 +
 
 +
<source lang=bash>
 +
$ pip3 install pdfplumber
 +
</source>
 +
 
 +
Refer to: https://zhuanlan.zhihu.com/p/40221732
 +
 
 +
<source lang=python>
 +
import pdfplumber
 +
import pandas as pd
 +
 
 +
pdf = pdfplumber.open('ncp-who.pdf')
 +
page0 = pdf.pages[0]              #PDF 文件的第一页
 +
table = page0.extract_table()
 +
d = pd.DataFrame(table)
 +
 
 +
print(d.loc[0])
 +
d.to_csv('ncp-who.csv', index = False, header = True, date_format='%Y%m%d')
 +
</source>
 +
 
 +
复杂的,参考:https://github.com/jsvine/pdfplumber/blob/master/examples/notebooks/extract-table-nics.ipynb
  
 
<br><br>
 
<br><br>
 +
 +
== getopt ==
 +
 +
=== sys ===
 +
 +
<source lang=python>
 +
import sys
 +
print(sys.argv[0])
 +
 +
for i in range(1, len(sys.argv)):
 +
    print (i, sys.argv[i])
 +
</source>
 +
 +
<source lang=bash>
 +
$ python test.py hello world
 +
test.py
 +
1 hello
 +
2 world
 +
</source>
 +
 +
<br>
 +
 +
=== getopt ===
 +
 +
<source lang=python>
 +
import sys, getopt
 +
 +
opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
 +
input_file=""
 +
output_file=""
 +
for op, value in opts:
 +
    if op == "-i":
 +
        input_file = value
 +
    elif op == "-o":
 +
        output_file = value
 +
    elif op == "-h":
 +
        usage()
 +
        sys.exit()
 +
</source>
 +
 +
<br>
  
 
== Resource ==
 
== Resource ==
第403行: 第522行:
  
 
* Python Quick Start: http://www.tutorialspoint.com/python/python_lists.htm
 
* Python Quick Start: http://www.tutorialspoint.com/python/python_lists.htm
 +
 +
* Python 命令行参数:https://blog.csdn.net/power721/article/details/8749576
 +
 +
* [[Color]]
  
 
<br><br>
 
<br><br>

2020年3月19日 (四) 15:13的版本

目录

1 Quick Start


Install pip:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python get-pip.py


Using the pip to install the numpy and tensorflow package:

$ sudo pip3 install numpy pandas matplotlib
$ sudo pip3 install scipy
$ sudo pip3 install tensorflow


Jupyter Notebook介绍、安装及使用教程



2 Basics

2.1 Numbers

Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
>>> a = 3.23
>>> b = 4
>>> c = 52.3E-4
>>> print a, b, c
3.23 4 0.00523


2.2 HEX

>>> print str(254)
254
>>> print hex(254)
0xfe
>>> print hex(254).upper()
0XFE
>>> str = "%02X" %(254); print str
FE
>>> print hex(1023)
0x3ff
>>> print hex(1023)[0:-2]
0x3


2.3 Strings

#!/usr/bin/python

str_1 = 'Jack Tan'
str_2 = "Ga Xiao Duo"
str_3 = '''This is a multi-line string. first line.
second line'''

# using the startswith method of the string object
if str_1.startswith('Ja'):
    print("Yes, str_1 start with 'Ja'")

if 'a' in str_1:
    print('Yes, str_1 contains the string "a"')

substr = 'ac'
if str_1.find(substr) != -1:
    print('Yes, str_1 contains the string "{0}"'.format(substr))
    print('Yes, {0} contains the string "{1}"'.format('str_1', substr))
    print('Yes, {} contains the string "{}"'.format('str_1', substr))
    # using the format method of the string object

deli = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']

# using the join method of the string object
print(deli.join(mylist))

Output:

Yes, name start with 'Ja'
Yes, name contains the string "a"
Yes, name contains the string "ac"
Brazil_*_Russia_*_India_*_China

Once your have created a string, you cannot change it



2.4 Variable

Python refers to anything used in a program as an object.

Do not need type declaration of variable in python

Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
>>> a = 3.1415
>>> b = 100000
>>> c = 'Jack Tan'
>>> d = ['x1', 'x2']
>>> print a, b, c, d
3.1415 100000 Jack Tan ['x1', 'x2']
.

Variables can hold values of different types called data types. The basic types are numbers and strings. We can create our own types using classes.


2.5 Indentation

Whitespace at the beginning of the line is important!

Spaces and tabs at the beginning of the logical line are used to determine the indentation level of the logical line, which in turn is used to determine the grouping of statements.

Statements which go together must have the same indentation. Each usch set of statements is called a block


2.6 Format

#!/usr/bin/python

#width = 10,precise = 3,align = left
print "PI = %10.3f" %(math.pi)

# don't add the '\n' at the end of line
print "PI = %10.3f" %(math.pi),

#width = 10,precise = 3,align = rigth
print "PI = %-10.3f" % math.pi


Output:

PI = 3.141593
PI =      3.142


Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
>>> print "%.3s " % ("jcodeer") #precise = 3
jco 
>>> print "%.*s" % (4,"jcodeer") #precise = 4
jcod
>>> print "%10.3s" % ("jcodeer") #width = 10,precise = 3
       jco
>>>


fmat = "%r %r %r %r"
 
print fmat % (1, 2, 3, 4)
print fmat % ("one", "two", "three", "four")
print fmat % (True, False, False, True)
1 2 3 4
'one' 'two' 'three' 'four'
True False False True


print('{0:.3}'.format(0.3333333))
#print('{0:.3}'.format(1/3))
print('{0:_^11}'.format('Hello'))
print('{0:+^11}'.format('Hello'))
print('{name} wrote {book}'.format(name='Jack', book='Hello world'))
PI = 3.141593
PI =      3.142

0.333
___Hello___
+++Hello+++
Jack wrote Hello world



3 Operators



4 Control Flow

4.1 if

i = 5
if i == 0:
    print 'Zero'
elif i > 0:
    print 'Positive'
else:
    print 'Negative'


4.2 While

n = 4
while n:
    print 'Loop is OK'
    n -= 1
else:
    print 'Loop is over'



4.3 For

for ... in

for i in range(1,5):
    print i
else:
    print 'The loop is over'



5 Functions



6 Data Structures



7 Exceptions

7.1 with...as

#!/usr/bin/python

import sys

class test:
    def __enter__(self):
        print("enter")
        return 1
    def __exit__(self, *args):
        print("clean up")
        return False
        #return True


with test() as t:
    print("t is not the result of test(), it's __enter__ returned")
    print("t is 1, yes, it's {0}".format(t))
    print "t is 1, yes, it's", t
    raise NameError("Error")

sys.exit()
print("Never here")



8 Matplotlib


8.1 bar

def currency(x, pos):
    """The two args are the value and tick position"""
    if x >= 1e6:
        s = '${:1.1f}M'.format(x*1e-6)
    else:
        s = '${:1.0f}K'.format(x*1e-3)
    return s

formatter = FuncFormatter(currency)

fig, ax = plt.subplots(figsize=(6, 8))
ax.xaxis.set_major_formatter(formatter)


8.2 hist


9 Modules

9.1 Serial

import serial
import string
import binascii

s = serial.Serial('com4',9600)
s.open()

# rx data
n = s.inwaiting()
if n: 
    data = str(binascii.b2a_hex(s.read(n)))[2:-1]
    print(data)

# tx data
d = bytes.fromhex('10 11 12 34 3f') 
s.write(d)
s.close()


9.2 Struct (TX binary data)

import struct 

a = [0x00, 0x00, 0x00, 0x2c, 0x63, 0x00, 0x00, 0x00,  0x75, 0x4b, 0xef, 0x0f] 

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

s.connect(('127.0.0.1',8000)) 

date = struct.pack("%dB"%(len(a)),*a) 

s.send(date) 



9.3 MQTT

Please refer to: http://wiki.jackslab.org/Noduino_OpenPlug#Turn_off_2


9.4 HTTP

httplib 实现了 http & https 的客户端协议,模块 urllib 和 urllib2 对 httplib 进行了更上层的封装

#!/usr/bin/env python
#  -*- coding:utf-8 -*-
 
import urllib2
import json
 
def http_post(url,data_json):
    jdata = json.dumps(data_json)
    req = urllib2.Request(url, jdata)
    response = urllib2.urlopen(req)
    return response.read()
 
url = 'http://192.168.0.100:8080/dev/test'
data_json = {'data' : '112233'}
resp = http_post(url,  data_json)
print(resp)


使用post方式时,数据放在 data 或者 body 中:

import urllib
import urllib2

test_data = {'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode = urllib.urlencode(test_data)
requrl = "http://192.168.1.16/dev/test"
req = urllib2.Request(url = requrl, data =test_data_urlencode)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res


Python3:

import urllib.request as http

resp = http.urlopen('http://iot.xxx.net')
# print(resp.info())
resp.read()
resp.close()

Reference: https://docs.python.org/3.8/library/urllib.request.html#module-urllib.request


9.5 Time


9.6 PDF

$ pip3 install pdfplumber

Refer to: https://zhuanlan.zhihu.com/p/40221732

import pdfplumber
import pandas as pd

pdf = pdfplumber.open('ncp-who.pdf')
page0 = pdf.pages[0]               #PDF 文件的第一页
table = page0.extract_table()
d = pd.DataFrame(table)

print(d.loc[0])
d.to_csv('ncp-who.csv', index = False, header = True, date_format='%Y%m%d')

复杂的,参考:https://github.com/jsvine/pdfplumber/blob/master/examples/notebooks/extract-table-nics.ipynb



10 getopt

10.1 sys

import sys
print(sys.argv[0])

for i in range(1, len(sys.argv)):
    print (i, sys.argv[i])
$ python test.py hello world
test.py
1 hello
2 world


10.2 getopt

import sys, getopt

opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
    if op == "-i":
        input_file = value
    elif op == "-o":
        output_file = value
    elif op == "-h":
        usage()
        sys.exit()


11 Resource









个人工具
名字空间

变换
操作
导航
工具箱