日志(2)

 

1. path1 = os.path.dirname(__file__)  

2. print(path1)#获取当前运行脚本的绝对路径 

3. path2 = os.path.dirname(os.path.dirname(__file__)) #  
4. print(path2)#获取当前运行脚本的绝对路径(去掉最后一个路径) 

后面以此类推
拼接路径
config_path=os.path.join(os.path.dirname(__file__),config_path)


问题2:

extend()和expend的区别
list.append(object) 向列表中添加一个对象object
list.extend(sequence) 把一个序列seq的内容添加到列表中

 

问题3:

sql中的set和update语句

UPDATE Person
SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

其使用格式:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

sql 中的rollback,commit(?)
ROLLBACK 只能在一个事务处理内使用(在执行一条 START TRANSACTION 命令之后)
ROLLBACK 语句回退START TRANSACTION 之后的所有语句

哪些语句可以回退? 事务处理用来管理 INSERT 、 UPDATE 和DELETE 语句
你不能回退 SELECT 语句。(这样做也没有什么意义。)你不能回退 CREATE 或 DROP 操作。事务处理块中可以使用这两条语句,但如果你执行回退,它们不会被撤销。

源文档 https://www.cnblogs.com/minigrasshopper/p/7803989.html

 

问题4:

dict() 函数用于创建一个字典。返回一个字典。

d = dict()
  d['key'] = 'value' #插入值

 

问题5:

python模块之configparser
configparser用于处理特定格式的文件,其本质上是利用open来操作文件。
源文档 https://www.cnblogs.com/huamingao/p/6081064.html

解析配置文件:

cfg = configparser.ConfigParser()
#这个read表示对某个文件用读打开,
cfg.read(config_path,encoding = 'utf-8')

常用方法:

1 #返回指定结点下的所有键值对
ret = config.items('section1')
2 #options返回的是指定店铺的配置文件中的键
keys = cfg.options(shop_id)
3 获取指定节点下指定key的值
v = config.get('section1', 'k1')

 

问题6:

报错:
invalid character in identifier报错:

意思就是“标识符中的无效字符”,检查下有没有字符是中文的,把中文字符改成英文字符再运行就OK啦。

 

问题7:

Python multiprocessing模块

http://blog.csdn.net/dutsoft/article/details/54694798

多线程模块
multiprocessing.dummy

#创建管理进程模块:
• Process(用于创建进程模块)
• Pool(用于创建管理进程池)
• Queue(用于进程通信,资源共享)
• Value,Array(用于进程通信,资源共享)
• Pipe(用于管道通信)
• Manager(用于资源共享)

#同步子进程模块:
• Condition
• Event
• Lock
• RLock
• Semaphore

 

问题8:

linux与windows的不同:
linux的字符界面不是windows 下的dos界面
1 linux严格区分大小写
2 linux中所有内容以文件形式保存,包括硬件。*
3 linux不靠扩展名区分文件类型(有约定俗成的 扩展,但是只是为了给管理员看的)
4 windows下的程序不能直接在linux中安装和运行的。

字符界面的优势
字符界面占用系统资源少
字符界面减少了出错、被攻击的可能性。

 

问题9:

报错:

xxxxx takes 1 positional argument but 2 were given
缺少参数

 

问题10:

#Python 获取日期
self.todaydate=datetime.date.today()
self.yesterday=self.todaydate-datetime.timedelta(days=1)
self.tomorrow=self.todaydate+datetime.timedelta(days=1)
self.before7day=self.todaydate-datetime.timedelta(days=7)

self.todaytime=datetime.datetime.now().strftime('%Y-%m-%dT00:00:00')
self.yesterdaytime=self.yesterday.strftime('%Y-%m-%dT00:00:00')
self.tomorrowtime=self.tomorrow.strftime('%Y-%m-%dT00:00:00')

 注意:

将日期类型当做参数的时候,要根据参数类型修改,有时候参数可能是字符串,要将日期类型改为str类型的(判断日期相等的时候也可能需要)。

 

问题11:

传入参数个数报错,可能是因为写方法的时候没有加入self。

SQL SELECT 日期函数的时候需要一字符串的方式传入。

爬取的数据在写入数据库的时候要注意是否是None类型,数据库字段可能是notnull类型。

 

问题12:

怎么声明编码

源文档 <http://blog.csdn.net/wangbenzhang/article/details/76448784>

Python编程时,经常需要跳过第一行读取文件内容。

源文档 <http://blog.csdn.net/vernice/article/details/46501885>

 

问题13:

python如何生成链表
见牛客网的习题

mergeHead = ListNode(90)#创建一个链表结点
pHead1.val #pHead1结点的值
pHead.next表示该结点的下一个结点

 

问题14

Python 字典如何获取字典中最大值对应的键

1. 利用min(dict, key=dict.get)
>>> d = {1:1, 2:0, 3:2}
{1: 1, 2: 0, 3: 2}
>>> min(d, key=d.get)
2
2. 利用lambda函数
>>> min(d.items(), key=lambda x: x[1]) 
(2, 0)
>>> min(d, key=lambda x: d[x])
2
3. collections模块中的Counter方法返回列表中每个元素出现的次数,返回的结果是一个字典,元素作为键,次数作为值。
tmp = collections.Counter(numbers)
defget_max(data):
count=Counter(data)
m=max(count,key=count.get)
returnm

  

问题15

1 Case具有两种格式。简单Case函数和Case搜索函数。 
--简单Case函数 
CASE sex 
         WHEN '1' THEN '男' 
         WHEN '2' THEN '女' 
ELSE '其他' END 
--Case搜索函数 
CASE WHEN sex = '1' THEN '男' 
         WHEN sex = '2' THEN '女' 
ELSE '其他' END 

源文档 <https://www.cnblogs.com/clphp/p/6256207.html>


2 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

select (case when a>b then a else b end), 
(case when b>c then b esle c end) 
from table_name

 

问题16:

1 Cmd ipconfig查询我的ip信息

2 写代码要遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,

简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展。

源文档 <http://python.jobbole.com/86632/>

 

问题17:

1 python的值传递和引用传递区别

源文档 <http://www.dataguru.cn/thread-489552-1-1.html>

 

2 深入理解python中函数传递参数是值传递还是引用传递

源文档 <http://www.jb51.net/article/127667.htm>

Python不允许程序员选择采用传值还是传 引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能 直接修改原始对象——相当于通过“传值”来传递对象。


3 python中self的含义
• self在定义时需要定义,但是在调用时会自动传入。
• self的名字并不是规定死的,但是最好还是按照约定是用self
• self总是指调用时的类的实例。

源文档 <https://www.cnblogs.com/jessonluo/p/4717140.html>

 

posted @ 2018-03-20 10:49  未来分析师  阅读(296)  评论(0)    收藏  举报