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总是指调用时的类的实例。