0%

2018年1月7日 下午2:19

基本操作

1
2
3
4
5
# Scrapy常用命令
# 创建新项目:scrapy startproject tutorial
# 在项目目录下执行:
# 生成爬虫:scrapy genspider mydomain mydomain.com
# 执行爬虫:scrapy crawl <spider>

遇到的错误

1
2
3
4
5
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/Users/czh/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/53/3gvx1k5x1lqdh3ctwsyv99cw0000gn/T/pip-build-8b59p8ev/Twisted/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/53/3gvx1k5x1lqdh3ctwsyv99cw0000gn/T/pip-5dd0tubi-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/53/3gvx1k5x1lqdh3ctwsyv99cw0000gn/T/pip-build-8b59p8ev/Twisted/

解决方法

1
localhost:~ czh$ xcode-select --install

安装过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
xcode-select: note: install requested for command line developer tools
localhost:~ czh$ pip install Scrapy
Collecting Scrapy
Using cached Scrapy-1.5.0-py2.py3-none-any.whl
Requirement already satisfied: cssselect>=0.9 in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: PyDispatcher>=2.0.5 in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: lxml in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: queuelib in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: pyOpenSSL in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Collecting Twisted>=13.1.0 (from Scrapy)
Using cached Twisted-17.9.0.tar.bz2
Requirement already satisfied: w3lib>=1.17.0 in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Collecting parsel>=1.1 (from Scrapy)
Using cached parsel-1.3.1-py2.py3-none-any.whl
Requirement already satisfied: service-identity in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: six>=1.5.2 in ./anaconda3/lib/python3.6/site-packages (from Scrapy)
Requirement already satisfied: cryptography>=1.9 in ./anaconda3/lib/python3.6/site-packages (from pyOpenSSL->Scrapy)
Requirement already satisfied: zope.interface>=4.0.2 in ./anaconda3/lib/python3.6/site-packages (from Twisted>=13.1.0->Scrapy)
Requirement already satisfied: constantly>=15.1 in ./anaconda3/lib/python3.6/site-packages (from Twisted>=13.1.0->Scrapy)
Requirement already satisfied: incremental>=16.10.1 in ./anaconda3/lib/python3.6/site-packages (from Twisted>=13.1.0->Scrapy)
Requirement already satisfied: Automat>=0.3.0 in ./anaconda3/lib/python3.6/site-packages (from Twisted>=13.1.0->Scrapy)
Requirement already satisfied: hyperlink>=17.1.1 in ./anaconda3/lib/python3.6/site-packages (from Twisted>=13.1.0->Scrapy)
Requirement already satisfied: pyasn1-modules in ./anaconda3/lib/python3.6/site-packages (from service-identity->Scrapy)
Requirement already satisfied: pyasn1 in ./anaconda3/lib/python3.6/site-packages (from service-identity->Scrapy)
Requirement already satisfied: attrs in ./anaconda3/lib/python3.6/site-packages (from service-identity->Scrapy)
Requirement already satisfied: idna>=2.1 in ./anaconda3/lib/python3.6/site-packages (from cryptography>=1.9->pyOpenSSL->Scrapy)
Requirement already satisfied: asn1crypto>=0.21.0 in ./anaconda3/lib/python3.6/site-packages (from cryptography>=1.9->pyOpenSSL->Scrapy)
Requirement already satisfied: cffi>=1.7 in ./anaconda3/lib/python3.6/site-packages (from cryptography>=1.9->pyOpenSSL->Scrapy)
Requirement already satisfied: setuptools in ./anaconda3/lib/python3.6/site-packages (from zope.interface>=4.0.2->Twisted>=13.1.0->Scrapy)
Requirement already satisfied: pycparser in ./anaconda3/lib/python3.6/site-packages (from cffi>=1.7->cryptography>=1.9->pyOpenSSL->Scrapy)
Building wheels for collected packages: Twisted
Running setup.py bdist_wheel for Twisted ... done
Stored in directory: /Users/czh/Library/Caches/pip/wheels/91/c7/95/0bb4d45bc4ed91375013e9b5f211ac3ebf4138d8858f84abbc
Successfully built Twisted
Installing collected packages: Twisted, parsel, Scrapy
Successfully installed Scrapy-1.5.0 Twisted-17.9.0 parsel-1.3.1

2018年1月6日 下午6:43

总结:

  1. 这篇文章中最重要的内容是:对比Numpy和pandas,让自己心灵有一个明确的区分
  2. 在这个过程中总结了一些知识点,如下

对比Numpy和pandas

  1. 我觉得最简单的区分Numpy和pandas的方法:依然还是从现实的角度出发
  2. Numpy是对矩阵,也就是数学上的东西进行运算、处理而存在的
  3. Pandas是更像是是excle这类进行处理的,series可以看成特殊的dataFrame
  4. 总结:一个偏向于数学上的矩阵,一个偏向于excle这样的数据处理软件

Numpy:

  1. NumPy 的诞生弥补了这些不足,NumPy 提供了两种基本的对象
    1. ndarray(N-dimensional array object)
    2. ufunc(universal function object)。
  2. ndarray 是存储单一数据类型多维数组,而 ufunc 则是能够对数组进行处理的函数。
  3. Numpy 是 Python 下的一个 library。numpy 最主要的是支持矩阵操作与运算非常高效是 numpy 的优势,core 为 C 编写。提升了 python 的处理效率,同时 numpy 也是一些与比较流行的机器学习框架的基础

初始化方式多

  1. Np.array(list,list,list)
  2. Np.eye()
  3. Np.random.rand(5,5)
  4. np.arange(16)
  5. np.zero
  6. Np.identity(5)

维度上的操作:

  1. 增维
  2. 转置
  3. 降维
  4. 排序
  5. 广播算法
  6. 行列数变化
    1. 拼接
    2. 分割
    3. 重复

源码:

class7.html

2018年1月5日 下午4:00

总结:

  1. 我对环境变量的问题一直不是很清楚,今天看见群里有一个人问关于python的一个问题时,涉及到了环境变量的设置,我就稍微总结一下
  2. mac中有三个地方可以设置环境变量:
    1. Mac 可设置环境变量的位置、查看和添加PATH环境变量 - CSDN博客
    2. _etc_profile (建议不修改这个文件 )
      1. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
    3. _etc_bashrc (一般在这个文件中添加系统级环境变量)
      1. 全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
      2. 我在这里加入mysqlstart、mysql和mysqladmin命令的别名,保证每一个用户都可以使用这3个命令。
    4. ~/.bash_profile (一般在这个文件中添加用户级环境变量)
      1. (注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
      2. 若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
      3. 我在这里:设置终端配色、
      4. 我在这里:设置命令别名alias ll=’ls -la’
      5. 我在这里:设置环境变量:export PATH=_opt_local_bin:_opt_local_sbin:$PATH
  3. 以下是我当前三个文件的内容:


    注:在这里只有我手动安装的php的环境,以及自动添加的python
    的环境
  4. 会发现:其实没有设置java的环境变量
  5. 但是:运行java程序是没有问题的
    1. 在下面的代码(ava -version)中可以看到java成功安装
    2. 但是,(echo $JAVA_HOME)这句却没有输出,说明环境变量并没有设置
    3. MAC 配置 Java 环境变量 - 于浦洋 的博客 - CSDN博客
    4. Java菜鸟学习编写第一个java程序HelloWorld_百度经验
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      localhost:desktop czh$ java -version
      java version "1.8.0_144"
      Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
      Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
      localhost:desktop czh$ echo $JAVA_HOME

      localhost:desktop czh$ javac HelloWorld.java
      localhost:desktop czh$ java HelloWorld
      Hello World!
      localhost:desktop czh$
  6. 结论:在mac当前版本中,其实不设置环境变量也是可以的

重要区分(java控制面板):

Java控制面板主要是给浏览器用,和我们敲代码一毛钱关系都没

  1. 控制面板中的java
  2. 自己安装的java

附件:
HelloWorld.java

2018年1月3日 上午9:41

更新 2020年5月21日 下午10:42

平常做leetcode和处理csv文件最长用到的

日常最长使用的基础python语法
pandas Cheat Sheet

思维导图

Python 编程核心知识体系 | 菜鸟教程

不常用到的

文件、多线程、爬虫、第三方库
我的疑惑:
Python的可变/不可变对象总结
第七课:Numpy
第八课:pandas

2019年12月14日 上午11:46
异步编程的理解

2019年12月22日 下午11:36
以画降水图为例,学习线程和进程:python就不要使用多线程!!!

2019年12月23日 下午11:01
以logtamper为例学习:python+c的struct

2018年1月1日 下午4:07

疑惑一:

class 3:

疑惑二:


解答:
这三种数据结构,各有用途,根据用途来记就行。
list就有序列表。
tuple是在list的基础上,加上了只读属性
而dict是一种kv对应的关系
list和tuple之间的转换很简单
但key如果要转换成list,先要想清楚,为啥要转。
是只转key,还是只转v,还是kv都转
老师明白你的意思了,我是看到有人将list转换成了dict
这样是可以的。
共有6个item,key是每个元祖的第一个,value是第二个。
像这种结构的转换是不是直接记住就行了,其实没啥原因?
转成dict就会方便操作。
嗯。你把a想象成用户名,4是密码
后边都是一样
而且,我还发现他在转换的过程中去除重复项
key值是唯一的
不允许 重复
不用死记这样的情况,用到了,去百度,去问问,就会了。
多用几次就熟了

疑惑三:

疑惑四:


这里的print一次全部输出,并且只输出一次

疑惑五:


代码:

1
2
3
4
5
6
7
8
9
10
11
#numpy
import numpy as np
array_3x3 = np.arange(9).reshape(3,3)

x = np.matrix(array_3x3)
# print(array_3x3) #结果一样
y = np.mat(np.identity(3))
# y = np.array(np.identity(3))#结果一样
# print(np.identity(3)) #结果一样
print(x)
print(y)

疑惑5

疑惑6

1
2
3
4
5
6
7
# 散点图
n = 2048
x = np.random.randn(n)
y = np.random.randn(n)
t = np.arctan2(y, x)
print(t)
plt.scatter(x, y, c=t)

np.arctan2 怎么用
矩阵的除法如何计算,尤其是list1/list2

疑惑7

  1. 通过学习python中的各种库的过程来看,我是没有根据手册进行学习的能力的,百度成了我主要的工具。
  2. 原因出在了:对英文手册不理解,就和考六级似的

疑惑8

1
2
3
4
5
6
7
8
>>> import string
>>> print(string.lowercase)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'string' has no attribute 'lowercase'
>>> print(string.__file__)
/Users/czh/anaconda3/lib/python3.6/string.py
>>>

疑惑9

解答:x = x[:,np.newaxis]这句加上。增维不在本身基础上进行

2018年1月1日 下午1:07

总结:

  1. 直接看最后的总结就行,前面都是分析过程,编程的时候不可能考虑那么多

  2. Python学习笔记——可变对象和不可变对象 - CSDN博客一个小小的参考

  3. 不可变对象在程序中一定是唯一的一个

    1. a=5 b=5 其中5就一个
    2. 而 list1=[1,2,3] list2=[1,2,3] 中的[1,2,3]是不同的两个
    3. 判断方法是id()值是否相同(不适合与list1=list2=[1,2,3]这种情况)
  4. 关于id:主要是这里存在一个必要非充分条件判断是否可变

    1. 样子一样的,不可变对象————>Id相同
    2. id相同 ——\——>样子一样的,不可变对象
  5. Id相同的意思是:此时这两个对象是相同的(可变对象也可以相同,当list1=list2=[1,2,3])

  6. 总结:最简单的方法

    1. 不可变(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)
    2. 可变(mutable):字典型(dictionary)、列表型(list)
      1. 只有多重赋值时(list1=list2=[1,2,3]),才是同一个对象
      2. 但他们两个添加元素的方式完全不同
    3. 多重赋值,一定是相同的对象(不论是否是可变)!!!!

2017年12月27日 下午4:41

Anaconda使用总结 - 简书

环境变量的理解

这篇文章有介绍mac环境变量的配置,我看完之后有了清晰的认识

安装过程记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
localhost:~ czh$ conda create --name python36 python=3.6
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment /Users/czh/anaconda3/envs/python36:

The following NEW packages will be INSTALLED:

ca-certificates: 2017.08.26-ha1e5d58_0
certifi: 2017.11.5-py36ha569be9_0
libcxx: 4.0.1-h579ed51_0
libcxxabi: 4.0.1-hebd6815_0
libedit: 3.1-hb4e282d_0
libffi: 3.2.1-h475c297_4
ncurses: 6.0-hd04f020_2
openssl: 1.0.2n-hdbc3d79_0
pip: 9.0.1-py36h1555ced_4
python: 3.6.4-hc167b69_0
readline: 7.0-hc1231fa_4
setuptools: 36.5.0-py36h2134326_0
sqlite: 3.20.1-h7e4c145_2
tk: 8.6.7-h35a86e2_3
wheel: 0.30.0-py36h5eb2c71_1
xz: 5.2.3-h0278029_2
zlib: 1.2.11-hf3cbc9b_2

Proceed ([y]/n)? y

ca-certificate 100% |################################| Time: 0:00:02 114.40 kB/s
libcxxabi-4.0. 100% |################################| Time: 0:00:01 137.84 kB/s
tk-8.6.7-h35a8 100% |################################| Time: 0:00:45 72.21 kB/s
xz-5.2.3-h0278 100% |################################| Time: 0:00:03 85.31 kB/s
zlib-1.2.11-hf 100% |################################| Time: 0:00:00 112.91 kB/s
libcxx-4.0.1-h 100% |################################| Time: 0:00:17 54.68 kB/s
openssl-1.0.2n 100% |################################| Time: 0:00:37 94.90 kB/s
libffi-3.2.1-h 100% |################################| Time: 0:00:00 370.24 kB/s
ncurses-6.0-hd 100% |################################| Time: 0:00:05 149.60 kB/s
libedit-3.1-hb 100% |################################| Time: 0:00:01 89.60 kB/s
readline-7.0-h 100% |################################| Time: 0:00:04 91.26 kB/s
sqlite-3.20.1- 100% |################################| Time: 0:00:19 98.78 kB/s
python-3.6.4-h 100% |################################| Time: 0:03:11 83.43 kB/s
certifi-2017.1 100% |################################| Time: 0:00:02 77.56 kB/s
setuptools-36. 100% |################################| Time: 0:00:06 77.94 kB/s
wheel-0.30.0-p 100% |################################| Time: 0:00:01 61.54 kB/s
pip-9.0.1-py36 100% |################################| Time: 0:00:37 60.54 kB/s
#
# To activate this environment, use:
# > source activate python36
#
# To deactivate an active environment, use:
# > source deactivate
#

localhost:~ czh$ source activate python36
(python36) localhost:~ czh$ python --version
Python 3.6.4 :: Anaconda, Inc.
(python36) localhost:~ czh$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
(python36) localhost:~ czh$ conda config --set show_channel_urls yes
(python36) localhost:~ czh$ jupyter notebook

jupyter notebook安装

Jupyter Notebook环境搭建(MAC) - 简书

1
jupyter notebook

jupyter notebook使用

Python·Jupyter Notebook各种使用方法记录·持续更新 - CSDN博客