问题:
公司的日报,每天填写的时候总是那么巨慢,都有点恐惧它了!
解决方案:
让代码帮我们每天定时提交,这样就可以省下精力取吹牛去了
好了,开始吧:
有两种思路,大概的描述一下如下:
一:定制一份模板的数据,每个月或者每个星期,让它自己的获取生成相应的数据,并提交.
二:采用交互的界面,这样就不要打开ie了,每天只要通过命令行就可以搞定.
首先看登陆:
1
def login(self):
2
"""
3
登陆
4
"""
5
loginparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,
6
'UPC_REQUEST_URI':'*.do','UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG'})
7
8
self.pform = urllib.urlopen(self.url,loginparams)
9

2

3

4

5

6

7

8

9

我们需要导入urllib. 传人登陆的参数即可,如上面的loginparams.
调用
1
urllib.urlopen(url[,params])

执行登陆.
其次:解析登陆完毕,从数据库种返回的内容,工号,姓名,部门,单位,地点,等等.
换一种方式也就是说,运用regex在html种解析,得到数据库范户的数据.
导入我们需要的re.
1
def parse(self):
2
"""
3
解析登陆完成的HTML页面,获取用户相应的信息
4
"""
5
content = '
'.join(self.pform.readlines())
6
items = ["employeeName","department","workArea","workCity","fillInDate"]
7
for item in items:
8
pattern = "name=""+item+""s*(size="d*")?s*value="(S*(s*S*)?)""
9
matcher = re.search(pattern,content)
10
11
if matcher!=None:
12
self.item = matcher.groups()[1]

2

3

4

5

6

7

8

9

10

11

12

regex这一部分,不明白,可以参考这里http://docs.python.org/lib/module-re.html.
好了,下一步就是提交我们的日报:
1
def post(self):
2
"""
3
提交日报
4
"""
5
posturl = 'http://host/*.do'
6
7
f = open(dataFileName)
8
contents = f.readlines()
9
10
#读取data文件,判断是否采用交互界面,还是采用data文件的数据
11
if contents[0]=='n':
12
c = raw_input('是否采用提交当天日志(y/n)?:')
13
if c!='y':
14
self.fillInDate = raw_input('请输入提交日期(格式yyyy-mm-dd):')
15
16
projectId = raw_input('项目名称代码:')
17
workId = raw_input('具体事项:')
18
workContent = raw_input('工作内容:')
19
workNum = raw_input('正常工作时长:')
20
overtimeNum = raw_input('加班工作时长:')
21
else:
22
23
#是否采用文件中的时间,如果不采用,则采用当前时间
24
if contents[1]=='y':
25
self.fillInDate = contents[2]
26
27
projectId = contents[3]
28
workId = contents[4]
29
workContent = contents[5]
30
workNum = contents[6]
31
overtimeNum = contents[7]
32
33
#拼凑参数 o_o
34
postparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,
35
'UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG',
36
'employeeId':self.username,'employeeName':self.employeeName,
37
'department':self.department,'workArea':self.workArea,'workCity':self.workCity,'fillInDate':self.fillInDate,
38
'detailList[0].projectId':projectId,'detailList[0].workId':workId,
39
'detailList[0].workContent':workContent,'detailList[0].workNum':workNum,'detailList[0].overtimeNum':overtimeNum})
40
41
#提交
42
result = urllib.urlopen(posturl,postparams)
43
#todo:解析提过完成页面,获取信息
44
#
45
result.close()
46

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

当然,现在的data文件格式比较简单,我们可以做的更实用一点,采用key=value的形式,或者其他.
fun.data的样子如下:
y n 0 JX00001 WK00022 稽查需求分析 0 8
第一行:是否采用当前data文件数据
第二行:是否采用自定义时间,如果不采用,第三行忽略,如果采用,时间即为第三行的值
第四行,第五行,第六行,日报具体的东西,不谈了.
第七行:正常工作时间
第八行:加班时间
完整代码如下:
1
#!/usr/bin/python
2
# -*- coding: UTF-8 -*-
3
4
import urllib
5
import os
6
import re
7
8
class Fun:
9
def __init__(self,username,password,times=1,
10
dataFileName='fun.data',
11
url='http://host/login.ctl',
12
proxies={'http': ip:port'},pform=None):
13
self.username=username
14
self.password=password
15
self.times = times
16
self.url=url
17
self.proxies=proxies
18
self.pform=pform
19
self.employeeName=''
20
self.department=''
21
self.workArea=''
22
self.workCity=''
23
self.fillInDate=''
24
self.dataFileName=dataFileName
25
26
def login(self):
27
"""
28
登陆
29
"""
30
loginparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,
31
'UPC_REQUEST_URI':'*.do','UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG'})
32
self.pform = urllib.urlopen(self.url,loginparams)
33
self.parse()
34
35
def parse(self):
36
"""
37
解析登陆完成的HTML页面,获取用户相应的信息
38
"""
39
content = '
'.join(self.pform.readlines())
40
items = ["employeeName","department","workArea","workCity","fillInDate"]
41
for item in items:
42
pattern = "name=""+item+""s*(size="d*")?s*value="(S*(s*S*)?)""
43
matcher = re.search(pattern,content)
44
45
if matcher!=None:
46
self.item = matcher.groups()[1]
47
48
def post(self):
49
"""
50
提交日报
51
"""
52
posturl = 'http://host/*.do'
53
54
f = open(dataFileName)
55
contents = f.readlines()
56
57
#读取data文件,判断是否采用交互界面,还是采用data文件的数据
58
if contents[0]=='n':
59
c = raw_input('是否采用提交当天日志(y/n)?:')
60
if c!='y':
61
self.fillInDate = raw_input('请输入提交日期(格式yyyy-mm-dd):')
62
63
projectId = raw_input('项目名称代码:')
64
workId = raw_input('具体事项:')
65
workContent = raw_input('工作内容:')
66
workNum = raw_input('正常工作时长:')
67
overtimeNum = raw_input('加班工作时长:')
68
else:
69
70
#是否采用文件中的时间,如果不采用,则采用当前时间
71
if contents[1]=='y':
72
self.fillInDate = contents[2]
73
74
projectId = contents[3]
75
workId = contents[4]
76
workContent = contents[5]
77
workNum = contents[6]
78
overtimeNum = contents[7]
79
80
#拼凑参数 o_o
81
postparams = urllib.urlencode({'j_username':self.username,'j_password':self.password,
82
'UPC_LOGIN_FLAG':'UPC_LOGIN_FLAG',
83
'employeeId':self.username,'employeeName':self.employeeName,
84
'department':self.department,'workArea':self.workArea,'workCity':self.workCity,'fillInDate':self.fillInDate,
85
'detailList[0].projectId':projectId,'detailList[0].workId':workId,
86
'detailList[0].workContent':workContent,'detailList[0].workNum':workNum,'detailList[0].overtimeNum':overtimeNum})
87
88
#提交
89
result = urllib.urlopen(posturl,postparams)
90
#todo:解析提过完成页面,获取信息
91
#
92
result.close()
93
94

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

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

相关推荐
create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end; 然后,开始在Python命令行中进行存储过程调用。 import cx_Oracle as cx ...
至于"python_mmio"标签,这可能指的是Python内存映射输入/输出(Memory-Mapped I/O)。在某些情况下,直接使用MMIO可以提高与硬件设备通信的效率,特别是在处理低级别的I/O操作时。不过,在DHT传感器的使用中,通常不...
这些实验可能涉及输入输出、字符串操作、列表和元组的使用、字典和集合的操作、文件I/O等基础知识。更高级的主题可能包括模块导入、异常处理、面向对象编程、装饰器、生成器以及Python标准库和第三方库的使用,比如...
Tornado则以其异步I/O模型和高性能而闻名,适合高并发场景。 2. **服务器搭建**:Python自带的HTTP服务器模块`http.server`可以快速启动一个简单的HTTP服务器,用于本地测试。但对于生产环境,通常会使用更专业的...
在实际应用中,为了提高效率和简化代码,可以使用Python的`asyncio`库来实现异步TCP服务器,利用事件循环和协程实现非阻塞I/O,从而在单线程中实现高效的并发处理。 总结,通过Python的socket和threading模块,我们...
其非阻塞I/O模型使得它可以处理大量的并发连接。 2. **TCP基础**:TCP是传输层协议,提供可靠的数据传输,通过三次握手建立连接,四次挥手断开连接。TCP保证数据包按顺序到达,且在网络异常时可以重传丢失的数据。 ...
不过,如果你需要下载大量的文件或者大文件,可能会考虑使用多线程或异步I/O来提高效率。Python的`concurrent.futures`模块提供了线程池和进程池,可以帮助我们实现这一目标。例如,你可以创建一个线程池并提交任务...
6. **文件和I/O操作**: 文件的读写操作、文件对象的使用、文本与二进制的区别、序列化和反序列化(pickle模dule)等都是Python开发者必备的知识。 7. **模块和包的管理**: 讲解如何有效地组织代码,创建模块...
Jones合著的一本经典Python编程参考书,由O'Reilly Media出版。这本书旨在为Python程序员提供实用的代码片段和解决方案,覆盖了从基础到高级的各种编程问题。它不仅是初学者学习Python语言的宝贵资源,也是经验丰富...
python3.8+win, 安装geopandas 依赖包下载 GDAL-3.2.1-cp38-cp38-win_amd64.whl Shapely-1.7.1-cp38-cp38-win_amd64.whl Fiona-1.8.18-cp38-cp38-win_amd64.whl pyproj‑3.0.0.post1‑cp38‑cp38‑win_amd64.whl ...
5. **并发处理**:为了处理多个同时在线的用户,服务器端可能需要使用多线程或多进程,或者使用非阻塞I/O模型如asyncio库。 6. **错误处理**:良好的错误处理机制是必不可少的,包括网络中断、无效消息处理等。 ...
删除IDA 7.0目录\python\sip.pyd 删除IDA 7.0目录\python\PyQt5目录 比如你的python安装目录是C:\python27-x64 添加环境变量 PYTHONHOME=C:\python27-x64 QT_QPA_PLATFORM_PLUGIN_PATH=C:\python27-x64\Lib\site-...
6. **文件操作**:Python提供了方便的文件I/O接口,包括读写文本文件、二进制文件、追加模式等,学会这些能实现数据持久化。 7. **标准库与第三方库**:Python拥有强大的标准库,如urllib、requests用于网络请求,...
通过`asyncio`库,开发者可以编写异步代码,实现非阻塞I/O,优化网络服务和多任务应用。 ### 多线程与多进程 Python提供了`threading`和`multiprocessing`库来实现多线程和多进程。多线程适用于CPU密集型任务,而...
Timsort能在O(n log n)的时间复杂度内完成排序,对于已经部分有序的数据,其效率更高。 除了内置的排序方法,Python还允许用户自定义排序的关键字,通过`key`参数实现。例如,如果我们要根据字符串长度进行排序,...
4. 文件I/O:了解如何在Python中读写文件,特别是处理TexGen的特定格式。 5. 编织算法:设计和实现算法来生成复杂的三维编织模式。 6. 数学和几何知识:理解和应用线性代数,理解3D空间中的坐标系统和几何变换。 ...
"python 异步"表明这个框架利用了Python的异步特性,如asyncio库,以实现高效的网络I/O操作。"网络协议"则暗示这个框架可能支持多种网络协议,如TCP/IP、HTTP等,允许开发者构建基于这些协议的应用。 在Python中,...
4. **Python文件操作**:如果数据存储在文件中而非直接在数据库中,那么`open()`函数和文件I/O操作会有所涉及。`pandas`库也支持直接从CSV、Excel等文件中读写数据。 5. **多线程(threading模块)**:标签中的...