侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

学Python的一些记录

2023-11-14 星期二 / 0 评论 / 0 点赞 / 38 阅读 / 5142 字

起因 老板今天反映某APP又挂了,问什么回事。由于那台是windows服务器(服务器我最讨厌windows,没有之一),直觉告诉我--服务器日志又满了。 果不其然,C盘空间只剩下900多K,这种事情已

起因

老板今天反映某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: 以":"号标识一个代码段,的开始,以缩进控制代码段的结束。

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

广告 广告

评论区