python程序代码解析_Python简单源码解析

主要为一些简单的源代码的解析以及一些方法的理解。

说明:这些文件都不是我写的,详情可参考Github上的内容。

批量修改文件类型

def batch_rename(work_dir, old_ext, new_ext):

for filename in os.listdir(work_dir):

file_ext = os.path.splitext(filename)[1]

if file_ext == old_ext:

newfile = filename.replace(old_ext,new_ext)

os.rename(os.path.join(work_dir,file_ext ),os.path.join(work_dir,new_ext))

os.listdir():列出当前目录下的所有文件,为文件的名称,而不是包含路径的名称,同样不包含子目录内的文件;

os.path.splitext():分割文件,分为文件名和文件类型。文件类型为最后一个.和后缀名,文件名称为最后一个.前的所有内容。

replace():字符串替换

os.path.join():用组合的方式将文件路径和文件名称组合为绝对路径。不同的系统添加的内容不一样。和join一样,但功能特殊化。

os.rename():修改文件名。

新建文件夹

def New_Folder(work_dir,Folder_name):

if not os.path.exists(os.path.join(work_dir,Folder_name)):

os.makedirs(os.path.join(work_dir,Folder_name))

def New_Folder(Folder_name):

if not os.path.exists(Folder_name)):

os.makedirs(Folder_name)

os.path.exists():判断文件夹是否存在

os.makedirs():新建文件夹

获取文件信息

import os

import stat

import time

def get_fileInfo(filename):

file_stats = os.stat(filename)

file_info = {

"fname":filename,

"fmode":file_stats[stat.ST_MODE],

"fsize":file_stats[stat.ST_SIZE],

"f_lm":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_MTIME])),

"f_la":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_ATIME])),

"f_ct":time.strftime("%d/%m/%Y %I:%M:%S %p",time.localtime(file_stats[stat.ST_CTIME]))

}

return file_info;

if __name__ == "__main__":

filename = input("Please input you file:")

fileinfo = get_fileInfo(filename)

print(fileinfo)

if stat.S_ISDIR(fileinfo["fmode"]):

print("Folder")

else:

print("filename :%(fname)s" % fileinfo)

os.stat():获取文件的系统状态信息,返回一个系统状态信息的元组。

stat模块

time.localtime():格式化时间,输入为sec(秒)

针对字典的格式化输出,有两种方式:

a. print("%(fname)s" % file_info)

b. print("%s" % file_info["fname"])

time.strftime():将当前时间格式化为字符串。

stat.S_ISDIR():判断是否为目录,同样还有其他的文件类型。

计算文件夹大小

def folder_size(folder_name):

fold_size = 0

for (path,dirs,files) in os.walk(folder_name):

for file in files:

filename = os.path.join(path,file)

fold_size += os.path.getsize(filename)

return fold_size

os.walk():遍历文件夹,其中遍历为广度优先遍历。即,先遍历当前的文件夹,一步一步深入遍历,同时,根据参数不同遍历的方式也不同。

a. path为当前的路径。

b. dirs为当前路径是否包含子目录,没有为[]

c. files为当前路径的文件列表。

os.path.getsize():获取文件大小。

将某一类型文件压缩

import os

from time import strftime

def zip_files(filedir,fileend,zip_prog):

for files in os.listdir(filedir):

if files.endswith(fileend):

files1 = files + "." + strftime("%y-%m-%d") + ".zip"

os.chdir(filedir)

os.popen(zip_prog + " " + files1 + " " + files)

#zip_prog = "zip.exe"

zip.exe:压缩程序

os.popen():调用exe,其中的参数和cmd参数一样,需要用空格区分,并且程序执行的目录页需要切换正确,不然会导致程序假执行的状态。

os.chdir():切换工作目录

files.endswith():判断后缀方法。

from time import strftime:导入某个某块的某一部分,避免全部导入。

os.system()和os.popen()虽然效果一样,但两者存在区别。明显的一点是,os.system和os.popen的返回结果已经执行效果并不相同。

遍历检查DNS服务

import subprocess

file_Test = input("File In:")

file_Out = input("File Out:")

fileout = open(file_Out ,"w");

for server in open(file_Test ):

subprocess.Popen(("nslookup" + " " + server ),stdout = fileout )

fileout.close()

详情参考subprocess.Popen()中的参数设定。

nslookup命令参数,详情可nslookup /?(windows)

stdout标准输出,将执行结果写入到file_out文件中。

写文件最后记得关闭文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值