天天看点

[PYTHON]简单的文件增删改查处理

快一个月木有更新了,在这段时间内,博主除了忙工作外,就一直在研究python编程,据圈内朋友闲聊,python应该是未来一个运维攻城狮除了shell以外必备的LINUX脚本语言,所以就硬着头皮,按照老男孩的python视频讲座,把自己的研究成果贴出来,目前还没学完,期待老男孩的讲座更加给力些。

PS: 1.老男孩的python视频讲座很不错,希望能继续免费下去。。。

2.博主编程很烂,有什么地方有问题,还请多多指教。。。

3.最近买了本PYTHON核心编程,啃书ing。。。

系统环境: Ubuntu 12.10 server 64-bit

PYTHON: Python 2.7.3

# mkdir python

# vi contact_list.txt

-------------------------

1 zhangsan IT 0001

2 lisi IT 0002

3 wangwu HR 0003

4 zhaoliu OP 0004

# vi staff_list.py

----------------------------------------------------

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

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

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

<code>#!/usr/bin/env python</code>

<code>#encoding:utf-8 # 支持中文输入</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>getpass</code>

<code>import</code> <code>shutil</code>

<code>import</code> <code>commands</code>

<code>import</code> <code>time</code>

<code>import</code> <code>fileinput</code>

<code>staff_list </code><code>=</code> <code>'contact_list.txt'</code>

<code># 参数配置</code>

<code>user </code><code>=</code> <code>'admin'</code>

<code>passwd </code><code>=</code> <code>'123456'</code>

<code>s </code><code>=</code> <code>file</code><code>(staff_list)</code>

<code>ss </code><code>=</code> <code>s.readlines()</code>

<code>a </code><code>=</code> <code>file</code><code>(staff_list,</code><code>'a'</code><code>)</code>

<code>counter </code><code>=</code> <code>0</code>

<code>_counter </code><code>=</code> <code>0</code>

<code># 认证登陆</code>

<code>while</code> <code>True</code><code>:</code>

<code>  </code><code># 计数器,超过3次强制退出</code>

<code>  </code><code>if</code> <code>counter &lt;</code><code>=</code> <code>3</code><code>:</code>

<code>    </code><code># 空用户名判断</code>

<code>    </code><code>name </code><code>=</code> <code>raw_input</code><code>(</code><code>"please input your name: "</code><code>).strip()</code>

<code>    </code><code>if</code> <code>len</code><code>(name) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>      </code><code>print</code> <code>"empty name,try again!"</code>

<code>      </code><code>continue</code>

<code>    </code><code># 用户名密码判断,密码隐藏</code>

<code>    </code><code># pwd =  raw_input("please input your password: ")</code>

<code>    </code><code>pwd </code><code>=</code> <code>getpass.getpass(</code><code>'please input your password:'</code><code>)</code>

<code>    </code><code>if</code> <code>pwd </code><code>=</code><code>=</code> <code>passwd </code><code>and</code> <code>name </code><code>=</code><code>=</code> <code>user:</code>

<code>      </code><code>print</code> <code>"Welcome to login,%s"</code> <code>%</code><code>name</code>

<code>    </code><code>else</code><code>:</code>

<code>      </code><code>print</code> <code>"name or password is not valid,please try again!"</code>

<code>          </code><code>counter </code><code>+</code><code>=</code><code>1</code>

<code>    </code><code>break</code>

<code>  </code><code>else</code><code>:</code>

<code>    </code><code>print</code> <code>"exceeded 3 times user login..exit the script"</code>

<code>    </code><code>sys.exit()</code>

<code># 选择增删改查</code>

<code>  </code><code>item </code><code>=</code> <code>raw_input</code><code>(</code><code>'''\033[36;1mWelcome to login %s, what do you want to do?</code>

<code>-----------------------</code>

<code>press 'p' for print</code>

<code>press 'a' for add</code>

<code>press 'd' for delete</code>

<code>press 'u' for update</code>

<code>press 's' for select</code>

<code>press 'q' for quit</code>

<code>please make your choise: \033[0m'''</code> <code>%</code> <code>user)</code>

<code>    </code> 

<code>  </code><code># 打印所有</code>

<code>  </code><code>if</code> <code>item </code><code>=</code><code>=</code> <code>'p'</code><code>:</code>

<code>    </code><code>while</code> <code>True</code><code>:</code>

<code>      </code><code>user_select </code><code>=</code> <code>open</code><code>(staff_list,</code><code>'r'</code><code>)</code>

<code>      </code><code>s_ </code><code>=</code> <code>user_select.read()   </code>

<code>      </code><code>print</code> <code>'                          '</code>

<code>      </code><code>print</code> <code>'\033[32;1mThe content of the file\033[0m '</code>

<code>      </code><code>print</code> <code>'\033[32;1m--------------------------\033[0m '</code>

<code>      </code><code>print</code> <code>s_</code>

<code>      </code><code>break</code>

<code>      </code> 

<code>  </code><code># 增加</code>

<code>  </code><code>elif</code> <code>item </code><code>=</code><code>=</code> <code>'a'</code><code>:</code>

<code>      </code><code>user_add_num </code><code>=</code> <code>raw_input</code><code>((</code><code>"\033[32;1mplease input your number: \033[0m "</code><code>).strip())</code>

<code>      </code><code>user_add_name </code><code>=</code> <code>raw_input</code><code>((</code><code>"\033[32;1mplease input your name: \033[0m "</code><code>).strip())</code>

<code>      </code><code>user_add_dept </code><code>=</code> <code>raw_input</code><code>((</code><code>"\033[32;1mplease input your department: \033[0m "</code><code>).strip())</code>

<code>      </code><code>user_add_id </code><code>=</code> <code>raw_input</code><code>((</code><code>"\033[32;1mplease input your id: \033[0m "</code><code>).strip())</code>

<code>      </code><code>user_item </code><code>=</code> <code>'%s\t%s\t%s\t%s'</code> <code>%</code><code>(user_add_num,user_add_name,user_add_dept,user_add_id)</code>

<code>      </code><code>a.write(</code><code>"\n%s"</code> <code>%</code><code>user_item)</code>

<code>      </code><code>a.flush()</code>

<code>      </code><code>print</code> <code>"\033[32;1mAdd item:\033[0m"</code>

<code>      </code><code>print</code> <code>"\033[32;1m------------------\033[0m"</code>

<code>      </code><code>print</code> <code>user_item</code>

<code>      </code><code>print</code> <code>"\033[32;1mAdded successful!\033[0m"</code>

<code>        </code> 

<code>      </code><code># 删除空行</code>

<code>      </code><code>del_blank_in </code><code>=</code> <code>open</code><code>(</code><code>'contact_list.txt'</code><code>,</code><code>'r'</code><code>)</code>

<code>      </code><code>del_blank_out </code><code>=</code> <code>open</code><code>(</code><code>'contact_list_new.txt'</code><code>,</code><code>'w'</code><code>)</code>

<code>      </code><code>lines </code><code>=</code> <code>del_blank_in.readlines()</code>

<code>      </code><code>for</code> <code>blank </code><code>in</code> <code>lines:</code>

<code>        </code><code>if</code> <code>blank.split():</code>

<code>          </code><code>del_blank_out.writelines(blank)</code>

<code>      </code><code>del_blank_in.close()</code>

<code>      </code><code>del_blank_out.close()</code>

<code>      </code><code># 覆盖原文件</code>

<code>      </code><code>shutil.move(</code><code>'contact_list_new.txt'</code><code>,</code><code>'contact_list.txt'</code><code>)</code>

<code>      </code><code>user_add_choise </code><code>=</code> <code>raw_input</code><code>(</code><code>'press Q for quit or press any key to continue: '</code><code>)</code>

<code>      </code><code>if</code> <code>user_add_choise </code><code>=</code><code>=</code> <code>'Q'</code><code>:</code>

<code>          </code><code>print</code> <code>'bye!'</code>

<code>          </code><code>break</code>

<code>  </code><code># 删除</code>

<code>  </code><code>elif</code> <code>item </code><code>=</code><code>=</code> <code>'d'</code><code>:</code>

<code>      </code><code>user_del_input </code><code>=</code> <code>raw_input</code><code>(</code><code>"please input sth to delete: "</code><code>).strip()</code>

<code>      </code><code>if</code> <code>len</code><code>(user_del_input) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>        </code><code>print</code> <code>"empty input,try again!"</code>

<code>      </code><code>else</code><code>:</code>

<code>        </code><code># 输入值与源文件比对,有则丢弃,没有则添加到新文件,最后新文件覆盖源文件,实现删除功能</code>

<code>        </code><code>with </code><code>open</code><code>(</code><code>'contact_list.txt'</code><code>,</code><code>'r'</code><code>) as ff:</code>

<code>          </code><code>with </code><code>open</code><code>(</code><code>'contact_list.txt.new'</code><code>,</code><code>'w'</code><code>) as gg:</code>

<code>            </code><code>for</code> <code>line </code><code>in</code> <code>ff.readlines():</code>

<code>              </code><code>if</code> <code>user_del_input </code><code>not</code> <code>in</code> <code>line:</code>

<code>                </code><code>gg.write(line)</code>

<code>          </code><code>if</code> <code>user_del_input </code><code>in</code> <code>line:</code>

<code>        </code><code>print</code> <code>"\033[32;1mDelete item:\033[0m"</code>

<code>        </code><code>print</code> <code>"\033[32;1m------------------\033[0m"</code>

<code>        </code><code>print</code> <code>" %s "</code> <code>%</code><code>line</code>

<code>        </code><code>_counter </code><code>+</code><code>=</code> <code>1</code> <code># 计数器,判断输入值命中次数</code>

<code>        </code><code>print</code> <code>"\033[32;1mDeleted successful!\033[0m"</code>

<code>        </code><code>if</code> <code>_counter </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>               </code><code>print</code> <code>'nothing delete!'</code>

<code>        </code><code>shutil.move(</code><code>'contact_list.txt.new'</code><code>,</code><code>'contact_list.txt'</code><code>)</code>

<code>        </code><code># 退出删除</code>

<code>        </code><code>user_del_input_quit </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mpress Q for quit or press any key to continue? \033[0m"</code><code>).strip()</code>

<code>        </code><code>if</code> <code>user_del_input_quit </code><code>=</code><code>=</code> <code>'Q'</code><code>:</code>

<code>            </code><code>break</code>    

<code>  </code><code># 查询</code>

<code>  </code><code>elif</code> <code>item </code><code>=</code><code>=</code> <code>'s'</code><code>:</code>

<code>      </code><code>match_yes </code><code>=</code> <code>0</code>

<code>      </code><code>#输入判断,忽略空格输入,加入颜色</code>

<code>      </code><code>user_select_input </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mplease input sth to search:\033[0m "</code><code>).strip()</code>

<code>      </code><code>contact_file </code><code>=</code> <code>file</code> <code>(staff_list)</code>

<code>      </code><code>if</code> <code>len</code><code>(user_select_input) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>        </code><code>while</code> <code>True</code><code>:</code>

<code>      </code><code>line </code><code>=</code> <code>contact_file.readline()</code>

<code>          </code><code>if</code> <code>len</code><code>(line) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>      </code><code>if</code> <code>user_select_input </code><code>in</code> <code>line:</code>

<code>          </code><code>match_yes </code><code>=</code> <code>1</code>

<code>          </code><code>print</code> <code>line</code>

<code>          </code><code>pass</code>

<code>        </code><code>if</code> <code>match_yes </code><code>=</code><code>=</code> <code>0</code> <code>:</code>

<code>          </code><code>print</code> <code>"No match item found"</code>

<code>      </code><code># 退出查询</code>

<code>        </code><code>user_select_input_quit </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mpress Q for quit or press any key to continue? \033[0m"</code><code>).strip()</code>

<code>        </code><code>if</code> <code>user_select_input_quit </code><code>=</code><code>=</code> <code>'Q'</code><code>:</code>

<code>   </code> 

<code>  </code><code># 修改</code>

<code>  </code><code>elif</code> <code>item </code><code>=</code><code>=</code> <code>'u'</code><code>:</code>

<code>      </code><code># 输入为空以及匹配查询内容判断</code>

<code>      </code><code>user_update_input_from </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mplease search sth to update: \033[0m"</code><code>).strip()</code>

<code>      </code><code>update_match </code><code>=</code> <code>0</code>

<code>      </code><code>update_file </code><code>=</code> <code>file</code><code>(staff_list).readlines()</code>

<code>      </code><code>for</code> <code>n_ </code><code>in</code> <code>range</code><code>(</code><code>len</code><code>(update_file)):</code>

<code>    </code><code>if</code> <code>user_update_input_from </code><code>in</code> <code>update_file[n_]:</code>

<code>        </code><code>update_match </code><code>=</code> <code>1</code>

<code>        </code><code>pass</code>

<code>      </code><code>if</code> <code>update_match </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>        </code><code>print</code> <code>"No match item found"</code>

<code>      </code><code>elif</code> <code>len</code><code>(user_update_input_from) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>    </code><code># 将匹配到的字符修改为新字符</code>

<code>      </code><code>user_update_input_to </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mupdate %s to what?\033[0m "</code> <code>%</code><code>(user_update_input_from)).strip()</code>

<code>      </code><code>if</code> <code>len</code><code>(user_update_input_to) </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>            </code><code>print</code> <code>"empty input,try again!"</code>

<code>        </code><code>for</code> <code>line_ </code><code>in</code> <code>fileinput.</code><code>input</code><code>(staff_list,inplace </code><code>=</code> <code>1</code><code>,backup</code><code>=</code><code>'.bak'</code><code>):</code>

<code>          </code><code>line_ </code><code>=</code> <code>line_.replace(user_update_input_from,user_update_input_to)</code>

<code>          </code><code>print</code> <code>line_</code>

<code>        </code><code># 打印修改字符的行</code>

<code>            </code><code>print</code> <code>"\033[32;1mupdate item:\033[0m"</code>

<code>            </code><code>output_ </code><code>=</code> <code>commands.getoutput(</code><code>"diff contact_list.txt contact_list.txt.bak|grep '^&gt;.*' | sed 's/^&gt;//g'"</code><code>)</code>

<code>        </code><code>print</code> <code>"\033[32;1m---------------------------\033[0m"</code>

<code>            </code><code>print</code> <code>output_</code>

<code>        </code><code>print</code> <code>"\033[32;1mupdate successfully!\033[0m"</code>

<code>            </code><code># 删除空行</code>

<code>            </code><code>del_blank_in </code><code>=</code> <code>open</code><code>(</code><code>'contact_list.txt'</code><code>,</code><code>'r'</code><code>)</code>

<code>            </code><code>del_blank_out </code><code>=</code> <code>open</code><code>(</code><code>'contact_list_new.txt'</code><code>,</code><code>'w'</code><code>)</code>

<code>            </code><code>lines </code><code>=</code> <code>del_blank_in.readlines()</code>

<code>            </code><code>for</code> <code>blank </code><code>in</code> <code>lines:</code>

<code>          </code><code>if</code> <code>blank.split():</code>

<code>            </code><code>del_blank_out.writelines(blank)</code>

<code>            </code><code>del_blank_in.close()</code>

<code>            </code><code>del_blank_out.close()</code>

<code>            </code><code># 覆盖原文件</code>

<code>            </code><code>shutil.move(</code><code>'contact_list_new.txt'</code><code>,</code><code>'contact_list.txt'</code><code>)</code>

<code>        </code><code>break</code>

<code>    </code><code># 退出更新</code>

<code>    </code><code>user_update_input_quit </code><code>=</code> <code>raw_input</code><code>(</code><code>"\033[32;1mpress Q for quit or press any key to continue? \033[0m"</code><code>).strip()</code>

<code>        </code><code>if</code> <code>user_update_input_quit </code><code>=</code><code>=</code> <code>'Q'</code><code>:</code>

<code>        </code><code>break</code>  

<code>         </code> 

<code>  </code><code># 退出</code>

<code>  </code><code>elif</code> <code>item </code><code>=</code><code>=</code> <code>'q'</code><code>:</code>

<code>    </code><code>print</code> <code>'bye!'</code>

<code>    </code><code>print</code> <code>"\033[31;1mnot a valid key word\033[0m"</code>

<code>    </code><code>time.sleep(</code><code>1</code><code>)</code>

-----------------------------------------------------

     本文转自 showerlee 51CTO博客,原文链接:http://blog.51cto.com/showerlee/1308764,如需转载请自行联系原作者