文档章节

学Python的一些记录

Kit_lee
 Kit_lee
发布于 2017/04/25 14:02
字数 1138
阅读 115
收藏 0

起因

老板今天反映某APP又挂了,问什么回事。由于那台是windows服务器(服务器我最讨厌windows,没有之一),直觉告诉我--服务器日志又满了。

果不其然,C盘空间只剩下900多K,这种事情已经不是头次了,公司也缺服务器点检和运维的人员,这事得想个办法一劳永逸。

我很自然的想到写段脚本定期去删除日志文件,非常简单,java和js都可以,但回头想想,前段时间不是老想学一下python吗,但苦于没有想写的东西,光看不入脑。我看,现在是个机会。

准备

知乎上看了一个pythoner的一些推荐,没有用现成的sublime去写脚本,我选择了用IDE,下了个pytharm,免费,应该挺好的。

python的话原来机器上就安装了2.7和3.6,在pytharm新建工程的时候选择了使用3.6的环境

搞起来

工程建好了,点击File菜单直接new了一个Python File,也就是常见的.py文件

百度了一下python的文件操作,嗯,用的是os.walk的api遍历文件夹,然后在遍历过程中用os.remove的api进行删除

代码如下:

#引入os包
import os


# 注释使用井号,嗯,蛮像一些配置文件的注释方法
# 定义一个变量,设置我要删除的文件夹
tempdir = 'c:' + os.sep + 'Windows' + os.sep + 'Temp'
# 打印信息到控制台
print('准备删除'+tempdir+'文件夹下的文件')
# 用os.walk遍历文件,并执行os.remove删除
for root, subdirs, files in os.walk(tempdir):
    for filename in files:
        print('正在删除文件:'+filename)
        # os.path.join是将路径与文件名合并,得到一个完整的文件地址
        os.remove(os.path.join(root, filename))

想想缺点什么,像java一样,运行一个java类得有main()方法呀?python是否也一样?百度了一下,版本2出来了

#引入os包
import os


# 定义一个方法
def deltempfile():
    # 定义一个变量,设置我要删除的文件夹
    tempdir = 'c:' + os.sep + 'Windows' + os.sep + 'Temp'
    # 打印信息到控制台
    print('准备删除'+tempdir+'文件夹下的文件')
    # 用os.walk遍历文件,并执行os.remove删除
    for root, subdirs, files in os.walk(tempdir):
        for filename in files:
            print('正在删除文件:'+filename)
            # os.path.join是将路径与文件名合并,得到一个完整的文件地址
            os.remove(os.path.join(root, filename))


# __name__是一个python变量,表示当前模块的名字,如果直接运行,那就是'__main__'
if __name__ == '__main__':
    deltempfile()

看样子不错,但严谨的我知道并没有那么简单,temp文件夹中经常有些临时文件是一些程序进程正在使用的,无法删除,这样子调用os.remove肯定会碰到抛错。我要把异常捕捉起来,再百度一下,版本3如下

#引入os包
import os


# 定义一个方法
def deltempfile():
    # 定义一个变量,设置我要删除的文件夹
    tempdir = 'c:' + os.sep + 'Windows' + os.sep + 'Temp'
    # 打印信息到控制台
    print('准备删除'+tempdir+'文件夹下的文件')
    # 用os.walk遍历文件,并执行os.remove删除
    for root, subdirs, files in os.walk(tempdir):
        for filename in files:
            print('正在删除文件:'+filename)
            try:
                # os.path.join是将路径与文件名合并,得到一个完整的文件地址
                os.remove(os.path.join(root, filename))
            except OSError:
                print('文件:'+filename+'被占用中,删除失败')


# __name__是一个python变量,表示当前模块的名字,如果直接运行,那就是'__main__'
if __name__ == '__main__':
    deltempfile()

到此大功告……一段落,接下来是部署

部署

这只是个自动维护的脚本,我也没空经常上服务器上跑一下这样子,那当然得让它每隔一段时间自动运行。windows服务器就这里方便些,打开自带的“计划任务”程序,添加一个计划任务,配置每周日执行一次,"python xxxxxxxxxx.py" (安装python后已配好Path变量,可以直接执行python命令),如下图

大功告成!手工往temp里丢一些文件,手工执行一下计划任务,完美!

归纳

python语法好简洁,但还算是很好理解的。代码行以回车分隔,并不需要像java一样打";"号。代码段用缩进处理,如java里边的for(){},到python只需要for xx in xxx: 以":"号标识一个代码段,的开始,以缩进控制代码段的结束。

其他倒没什么,就是变量定义不需要声明类型有点不习惯,所以说太简洁了!

© 著作权归作者所有

Kit_lee

Kit_lee

粉丝 13
博文 5
码字总数 5614
作品 0
广州
技术主管
私信 提问
《Python-面向对象》课程学习心得

前言 基础不牢,地动山摇。夯实基础永远都不早,也永远都不晚。今天我本着拯救世界,维护世界和平的初心,观赏剑圣OMG的Python-面向对象。该课程含蓄隽永、意味悠长、不用花钱,作者使用通俗...

恒宝乐园
10/13
17
0
学Python需要天赋吗?看完弟弟编写的爬虫与爆破脚本,只有汗水!

Python学习记录脚本,希望弟弟通过练习编写脚本一点点提升自己很菜的编程水平~~明天会更好,希望自己越来越强吧。 实现原理 Python3 实现批量查询网站的百度权重以及收录情况,利用的是站长之...

Python新世界
2018/07/24
0
0
老王python给你送上免费的python教程,希望对你学习有帮助

亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着pytho...

大卷卷
2011/08/17
338
1
android程序员python学习之路

1年半android经验,初次接触python,学了几天,相见恨晚,迫不及待的写了这篇记录下。python新手,请多见谅。 其实也不是最近才接触Python,大四上有一门计算机性能相关的课各种算法、工具要求...

Dynamic_2018
2018/07/08
0
0
Python程序员的30个常见错误

在这篇文章中,我将总结新老Python程序员常犯的一些错误,以帮助你们在自己的工作避免犯同样或类似错误。 首先我要说明一下的是,这些都是来源于第一手的经验。我以讲授Python的知识为生。在...

Mr_zebra
2018/12/04
16
0

没有更多内容

加载失败,请刷新页面

加载更多

从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
6
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
7
0
float浮动

float浮动 float浮动概念及原理: 文档流:文档流是文档中可显示对象在排列时所占用的位置。 加浮动的元素,会脱离文档流,会沿父容器靠左或靠右排列,如果之前已经有浮动的元素,会挨着浮动...

studywin
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部