2024年8个Python 实用脚本,2024年最新面试题附答案

简介: 2024年8个Python 实用脚本,2024年最新面试题附答案
filelists.append(os.path.join(parent,filename))
#统计一个的行数
def countLine(fname):
count = 0

把文件做二进制看待,read.

for file_line in open(fname, ‘rb’).readlines():
if file_line != ‘’ and file_line != ‘\n’: #过滤掉空行
count += 1
print (fname + ‘----’ , count)
return count
if name == ‘main’ :
startTime = time.clock()
getFile(basedir)
totalline = 0
for filelist in filelists:
totalline = totalline + countLine(filelist)
print (‘total lines:’,totalline)
print (‘Done! Cost Time: %0.2f second’ % (time.clock() - startTime))

3.扫描当前目录和所有子目录并显示大小。

‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
import os
import sys
try:
directory = sys.argv[1]
except IndexError:
sys.exit(“Must provide an argument.”)
dir_size = 0
fsizedicr = {‘Bytes’: 1,
‘Kilobytes’: float(1) / 1024,
‘Megabytes’: float(1) / (1024 * 1024),
‘Gigabytes’: float(1) / (1024 * 1024 * 1024)}
for (path, dirs, files) in os.walk(directory):
for file in files:
filename = os.path.join(path, file)
dir_size += os.path.getsize(filename)
fsizeList = [str(round(fsizedicr[key] * dir_size, 2)) + " " + key for key in fsizedicr]
if dir_size == 0: print (“File Empty”)
else:
for units in sorted(fsizeList)[::-1]:
print ("Folder Size: " + units)

4.将源目录240天以上的所有文件移动到目标目录。

import shutil
import sys
import time
import os
import argparse
usage = ‘python move_files_over_x_days.py -src [SRC] -dst [DST] -days [DAYS]’
description = ‘Move files from src to dst if they are older than a certain number of days. Default is 240 days’
args_parser = argparse.ArgumentParser(usage=usage, description=description)
args_parser.add_argument(‘-src’, ‘–src’, type=str, nargs=‘?’, default=‘.’, help=‘(OPTIONAL) Directory where files will be moved from. Defaults to current directory’)
args_parser.add_argument(‘-dst’, ‘–dst’, type=str, nargs=‘?’, required=True, help=‘(REQUIRED) Directory where files will be moved to.’)
args_parser.add_argument(‘-days’, ‘–days’, type=int, nargs=‘?’, default=240, help=‘(OPTIONAL) Days value specifies the minimum age of files to be moved. Default is 240.’)
args = args_parser.parse_args()
if args.days < 0:
args.days = 0
src = args.src # 设置源目录
dst = args.dst # 设置目标目录
days = args.days # 设置天数
now = time.time() # 获得当前时间
if not os.path.exists(dst):
os.mkdir(dst)
for f in os.listdir(src): # 遍历源目录所有文件
if os.stat(f).st_mtime < now - days * 86400: # 判断是否超过240天
if os.path.isfile(f): # 检查是否是文件
shutil.move(f, dst) # 移动文件

5.扫描脚本目录,并给出不同类型脚本的计数。

import os
import shutil
from time import strftime
logsdir=“c:\logs\puttylogs”
zipdir=“c:\logs\puttylogs\zipped_logs”
zip_program=“zip.exe”
for files in os.listdir(logsdir):
if files.endswith(“.log”):
files1=files+“.”+strftime(“%Y-%m-%d”)+“.zip”
os.chdir(logsdir)
os.system(zip_program + " " + files1 +" "+ files)
shutil.move(files1, zipdir)
os.remove(files)

6.下载Leetcode的算法题。

‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
import sys
import re
import os
import argparse
import requests
from lxml import html as lxml_html
try:
import html
except ImportError:
import HTMLParser
html = HTMLParser.HTMLParser()
try:
import cPickle as pk
except ImportError:
import pickle as pk
class LeetcodeProblems(object):
def get_problems_info(self):
leetcode_url = ‘https://leetcode.com/problemset/algorithms’
res = requests.get(leetcode_url)
if not res.ok:
print(‘request error’)
sys.exit()
cm = res.text
cmt = cm.split(‘tbody>’)[-2]
indexs = re.findall(r’(\d+)', cmt)
problem_urls = [‘https://leetcode.com’ + url \
for url in re.findall(
r’
levels = re.findall(r"(.+?)", cmt)
tinfos = zip(indexs, levels, problem_urls)
assert (len(indexs) == len(problem_urls) == len(levels))
infos = []
for info in tinfos:
res = requests.get(info[-1])
if not res.ok:
print(‘request error’)
sys.exit()
tree = lxml_html.fromstring(res.text)
title = tree.xpath(‘//meta[@property=“og:title”]/@content’)[0]
description = tree.xpath(‘//meta[@property=“description”]/@content’)
if not description:
description = tree.xpath(‘//meta[@property=“og:description”]/@content’)[0]
else:
description = description[0]
description = html.unescape(description.strip())
tags = tree.xpath(‘//div[@id=“tags”]/following::a[@class=“btn btn-xs btn-primary”]/text()’)
infos.append(
{
‘title’: title,
‘level’: info[1],
‘index’: int(info[0]),
‘description’: description,
‘tags’: tags
}
)
with open(‘leecode_problems.pk’, ‘wb’) as g:
pk.dump(infos, g)
return infos
def to_text(self, pm_infos):
if self.args.index:
key = ‘index’
elif self.args.title:
key = ‘title’
elif self.args.tag:
key = ‘tags’
elif self.args.level:
key = ‘level’
else:
key = ‘index’
infos = sorted(pm_infos, key=lambda i: i[key])
text_template = ‘## {index} - {title}\n’ \
‘{level} {tags}\n’ \
‘{description}\n’ + ‘\n’ * self.args.line
text = ‘’
for info in infos:
if self.args.rm_blank:
info[‘description’] = re.sub(r’[\n\r]+‘, r’\n’, info[‘description’])
text += text_template.format(**info)
with open(‘leecode problems.txt’, ‘w’) as g:
g.write(text)
def run(self):
if os.path.exists(‘leecode_problems.pk’) and not self.args.redownload:
with open(‘leecode_problems.pk’, ‘rb’) as f:
pm_infos = pk.load(f)
else:
pm_infos = self.get_problems_info()
print(‘find %s problems.’ % len(pm_infos))
self.to_text(pm_infos)
def handle_args(argv):
p = argparse.ArgumentParser(description=‘extract all leecode problems to location’)
p.add_argument(‘–index’, action=‘store_true’, help=‘sort by index’)
p.add_argument(‘–level’, action=‘store_true’, help=‘sort by level’)
p.add_argument(‘–tag’, action=‘store_true’, help=‘sort by tag’)
p.add_argument(‘–title’, action=‘store_true’, help=‘sort by title’)
p.add_argument(‘–rm_blank’, action=‘store_true’, help=‘remove blank’)
p.add_argument(‘–line’, action=‘store’, type=int, default=10, help=‘blank of two problems’)
p.add_argument(‘-r’, ‘–redownload’, action=‘store_true’, help=‘redownload data’)
args = p.parse_args(argv[1:])
return args
def main(argv):
args = handle_args(argv)
x = LeetcodeProblems()
x.args = args
x.run()
if name == ‘main’:
argv = sys.argv
main(argv)

7.将 Markdown 转换为 HTML。

import sys
import os
from bs4 import BeautifulSoup
import markdown
class MarkdownToHtml:
headTag = ‘’
def init(self,cssFilePath = None):
if cssFilePath != None:
self.genStyle(cssFilePath)
def genStyle(self,cssFilePath):
with open(cssFilePath,‘r’) as f:
cssString = f.read()
self.headTag = self.headTag[:-7] + ‘’.format(cssString) + self.headTag[-7:]
def markdownToHtml(self, sourceFilePath, destinationDirectory = None, outputFileName = None):
if not destinationDirectory:

未定义输出目录则将源文件目录(注意要转换为绝对路径)作为输出目录

destinationDirectory = os.path.dirname(os.path.abspath(sourceFilePath))
if not outputFileName:

未定义输出文件名则沿用输入文件名

outputFileName = os.path.splitext(os.path.basename(sourceFilePath))[0] + ‘.html’
if destinationDirectory[-1] != ‘/’:
destinationDirectory += ‘/’
with open(sourceFilePath,‘r’, encoding=‘utf8’) as f:
markdownText = f.read()

编译出原始 HTML 文本

rawHtml = self.headTag + markdown.markdown(markdownText,output_format=‘html5’)

格式化 HTML 文本为可读性更强的格式

beautifyHtml = BeautifulSoup(rawHtml,‘html5lib’).prettify()
with open(destinationDirectory + outputFileName, ‘w’, encoding=‘utf8’) as f:
f.write(beautifyHtml)
if name == “main”:
mth = MarkdownToHtml()

做一个命令行参数列表的浅拷贝,不包含脚本文件名

argv = sys.argv[1:]

目前列表 argv 可能包含源文件路径之外的元素(即选项信息)

程序最后遍历列表 argv 进行编译 markdown 时,列表中的元素必须全部是源文件路径

outputDirectory = None
if ‘-s’ in argv:

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。

🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。

🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。

🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。


相关文章
|
2月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
90 1
思科设备巡检命令Python脚本大集合
|
28天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
14天前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
56 7
21个Python脚本自动执行日常任务(2)
|
1月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
132 68
|
4天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
37 5
|
21天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
28 7
|
26天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
1月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
1月前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
72 2
|
1月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
87 3

热门文章

最新文章