Python作为一门简洁而强大的编程语言,已经渗透到我们生活的方方面面。无论您是数据分析师、Web开发者,还是仅仅对编程感兴趣,Python都能为您提供强大的支持。本文汇集了50个精心挑选的Python代码小案例,它们涵盖了文件处理、数据操作、网络请求、日期时间处理、以及实用工具等多个方面。
文章结构概览:
为了方便您查找和学习,我们将这50个案例大致分为以下几个类别:
文件和目录操作是编程的基础,Python提供了强大的库来处理这些任务。
案例1: 读取文件内容
defread_file_content(filepath):"""读取文件内容并返回字符串."""try:with open(filepath, 'r', encoding='utf-8') as f: content = f.read()return contentexcept FileNotFoundError:return"文件未找到"# 示例file_content = read_file_content('example.txt')print(file_content)案例2: 逐行读取文件内容
defread_file_line_by_line(filepath):"""逐行读取文件内容并返回列表."""try:with open(filepath, 'r', encoding='utf-8') as f: lines = f.readlines()return linesexcept FileNotFoundError:return ["文件未找到"]# 示例lines = read_file_line_by_line('example.txt')for line in lines: print(line.strip()) # strip()去除行尾的换行符案例3: 写入内容到文件
defwrite_content_to_file(filepath, content):"""将内容写入文件."""try:with open(filepath, 'w', encoding='utf-8') as f: f.write(content)return"写入成功"except Exception as e:returnf"写入失败: {e}"# 示例write_result = write_content_to_file('output.txt', '这是要写入的内容。\n第二行内容。')print(write_result)案例4: 追加内容到文件
defappend_content_to_file(filepath, content):"""将内容追加到文件末尾."""try:with open(filepath, 'a', encoding='utf-8') as f: f.write(content)return"追加成功"except Exception as e:returnf"追加失败: {e}"# 示例append_result = append_content_to_file('output.txt', '\n这是追加的内容。')print(append_result)案例5: 检查文件是否存在
import osdefcheck_file_exists(filepath):"""检查文件是否存在."""return os.path.exists(filepath)# 示例exists = check_file_exists('example.txt')print(f"文件是否存在: {exists}")案例6: 创建目录
import osdefcreate_directory(dirpath):"""创建目录."""try: os.makedirs(dirpath, exist_ok=True) # exist_ok=True 表示目录已存在时不会报错returnf"目录 '{dirpath}' 创建成功"except Exception as e:returnf"目录创建失败: {e}"# 示例create_result = create_directory('new_directory')print(create_result)案例7: 删除文件
import osdefdelete_file(filepath):"""删除文件."""try: os.remove(filepath)returnf"文件 '{filepath}' 删除成功"except FileNotFoundError:return"文件未找到"except Exception as e:returnf"文件删除失败: {e}"# 示例delete_result = delete_file('output.txt')print(delete_result)案例8: 删除目录 (目录必须为空)
import osdefdelete_directory(dirpath):"""删除目录 (目录必须为空)."""try: os.rmdir(dirpath)returnf"目录 '{dirpath}' 删除成功"except FileNotFoundError:return"目录未找到"except OSError:return"目录非空,无法删除"except Exception as e:returnf"目录删除失败: {e}"# 示例delete_result = delete_directory('new_directory')print(delete_result) # 如果目录不为空,会打印 "目录非空,无法删除"案例9: 列出目录中的文件和子目录
import osdeflist_directory_contents(dirpath):"""列出目录中的文件和子目录."""try: contents = os.listdir(dirpath)return contentsexcept FileNotFoundError:return ["目录未找到"]# 示例directory_contents = list_directory_contents('.') # '.' 表示当前目录print(f"目录内容: {directory_contents}")案例10: 获取文件大小
import osdefget_file_size(filepath):"""获取文件大小,单位为字节."""try: size_in_bytes = os.path.getsize(filepath)return size_in_bytesexcept FileNotFoundError:return"文件未找到"# 示例file_size = get_file_size('example.txt')print(f"文件大小: {file_size} 字节")Python在数据处理领域拥有强大的库,如 collections 和 itertools, 以及流行的 pandas 和 numpy (虽然这里我们主要关注Python标准库)。
案例11: 统计列表中元素出现的次数
from collections import Counterdefcount_list_items(data_list):"""统计列表中每个元素出现的次数,返回字典."""return Counter(data_list)# 示例my_list = ['a', 'b', 'a', 'c', 'b', 'b']counts = count_list_items(my_list)print(f"元素计数: {counts}") # Counter({'b': 3, 'a': 2, 'c': 1})案例12: 去除列表中的重复元素
defremove_duplicates_from_list(data_list):"""去除列表中的重复元素,保持顺序."""return list(dict.fromkeys(data_list)) # 利用字典的键唯一性# 示例my_list = [1, 2, 2, 3, 4, 4, 5, 1]unique_list = remove_duplicates_from_list(my_list)print(f"去重后的列表: {unique_list}") # [1, 2, 3, 4, 5]案例13: 合并两个字典
defmerge_dictionaries(dict1, dict2):"""合并两个字典,如果键冲突,dict2 的值覆盖 dict1 的.""" merged_dict = dict1.copy() # 创建 dict1 的副本,避免修改原字典 merged_dict.update(dict2) # 将 dict2 的键值对添加到 merged_dictreturn merged_dict# 示例dict1 = {'a': 1, 'b': 2}dict2 = {'b': 3, 'c': 4}merged = merge_dictionaries(dict1, dict2)print(f"合并后的字典: {merged}") # {'a': 1, 'b': 3, 'c': 4}案例14: 反转字典的键值对
defreverse_dictionary(data_dict):"""反转字典的键值对."""return {v: k for k, v in data_dict.items()}# 示例my_dict = {'name': 'Alice', 'age': 30}reversed_dict = reverse_dictionary(my_dict)print(f"反转后的字典: {reversed_dict}") # {'Alice': 'name', 30: 'age'}案例15: 字典按值排序
defsort_dictionary_by_value(data_dict, reverse=False):"""按字典的值排序,返回排序后的键值对列表."""return sorted(data_dict.items(), key=lambda item: item[1], reverse=reverse)# 示例my_dict = {'a': 10, 'c': 1, 'b': 5}sorted_dict = sort_dictionary_by_value(my_dict)print(f"按值升序排序: {sorted_dict}") # [('c', 1), ('b', 5), ('a', 10)]sorted_dict_desc = sort_dictionary_by_value(my_dict, reverse=True)print(f"按值降序排序: {sorted_dict_desc}") # [('a', 10), ('b', 5), ('c', 1)]案例16: 列表推导式:快速生成列表
defgenerate_squares(n):"""使用列表推导式生成 0 到 n-1 的平方列表."""return [x**2for x in range(n)]# 示例squares = generate_squares(5)print(f"平方列表: {squares}") # [0, 1, 4, 9, 16]案例17: 字典推导式:快速生成字典
defgenerate_dict_squares(n):"""使用字典推导式生成 0 到 n-1 的平方字典,键为数字,值为平方."""return {x: x**2for x in range(n)}# 示例dict_squares = generate_dict_squares(5)print(f"平方字典: {dict_squares}") # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}案例18: 使用 zip 函数同时迭代多个列表
defcombine_lists(names, ages, cities):"""使用 zip 函数同时迭代三个列表,返回姓名、年龄和城市的组合列表.""" combined_list = []for name, age, city in zip(names, ages, cities): combined_list.append(f"{name} is {age} years old and lives in {city}")return combined_list# 示例names = ['Alice', 'Bob', 'Charlie']ages = [25, 30, 28]cities = ['New York', 'London', 'Paris']combined = combine_lists(names, ages, cities)for item in combined: print(item)案例19: 使用 enumerate 函数迭代列表并获取索引
deflist_with_index(data_list):"""使用 enumerate 函数迭代列表,返回元素和索引的组合列表.""" indexed_list = []for index, item in enumerate(data_list): indexed_list.append(f"Index {index}: {item}")return indexed_list# 示例my_list = ['apple', 'banana', 'cherry']indexed = list_with_index(my_list)for item in indexed: print(item)案例20: 使用 itertools.groupby 函数分组数据
import itertoolsdefgroup_by_key(data_list, key_func):"""使用 itertools.groupby 函数根据 key_func 分组数据.""" sorted_data = sorted(data_list, key=key_func) # groupby 前需要先排序 grouped_data = {}for key, group in itertools.groupby(sorted_data, key=key_func): grouped_data[key] = list(group) # group 是迭代器,需要转换为 listreturn grouped_data# 示例data = [{'city': 'London', 'name': 'Alice'}, {'city': 'Paris', 'name': 'Bob'}, {'city': 'London', 'name': 'Charlie'}, {'city': 'Paris', 'name': 'David'}]grouped_by_city = group_by_key(data, key_func=lambda x: x['city'])print(f"按城市分组: {grouped_by_city}")Python的 requests 库让网络请求变得异常简单。
案例21: 发送GET请求并获取响应
import requestsdefget_webpage_content(url):"""发送 GET 请求到 URL 并返回网页内容."""try: response = requests.get(url) response.raise_for_status() # 检查请求是否成功 (状态码 200)return response.textexcept requests.exceptions.RequestException as e:returnf"请求失败: {e}"# 示例webpage_content = get_webpage_content('https://www.example.com')print(webpage_content[:200]) # 打印前 200 个字符案例22: 发送POST请求并传递数据
import requestsimport jsondefpost_data_to_url(url, data):"""发送 POST 请求到 URL 并传递 JSON 数据."""try: headers = {'Content-Type': 'application/json'} response = requests.post(url, data=json.dumps(data), headers=headers) response.raise_for_status()return response.json() # 尝试解析 JSON 响应except requests.exceptions.RequestException as e:returnf"请求失败: {e}"except json.JSONDecodeError:return"响应不是有效的 JSON 格式"# 示例post_url = 'https://httpbin.org/post'# 一个用于测试 HTTP 请求的网站post_data = {'name': 'John', 'age': 30}post_response = post_data_to_url(post_url, post_data)print(f"POST 响应: {post_response}")案例23: 下载文件到本地
import requestsdefdownload_file(url, filepath):"""从 URL 下载文件并保存到本地."""try: response = requests.get(url, stream=True) # stream=True 用于大文件下载 response.raise_for_status()with open(filepath, 'wb') as f:for chunk in response.iter_content(chunk_size=8192): # 分块写入,避免内存溢出 f.write(chunk)returnf"文件下载成功,保存到: {filepath}"except requests.exceptions.RequestException as e:returnf"文件下载失败: {e}"# 示例file_url = 'https://www.easygifanimator.net/images/samples/video-to-gif-sample.gif'# 一个 GIF 图片示例download_result = download_file(file_url, 'sample.gif')print(download_result)# [Image of sample gif image]案例24: 获取网页的HTTP状态码
import requestsdefget_http_status_code(url):"""获取 URL 的 HTTP 状态码."""try: response = requests.head(url) # 使用 HEAD 请求,只获取头部信息,更高效return response.status_codeexcept requests.exceptions.RequestException:return"请求失败"# 示例status_code = get_http_status_code('https://www.example.com')print(f"HTTP 状态码: {status_code}") # 通常为 200案例25: 设置请求超时时间
import requestsdefget_webpage_with_timeout(url, timeout_seconds):"""发送 GET 请求,并设置超时时间."""try: response = requests.get(url, timeout=timeout_seconds) response.raise_for_status()return response.textexcept requests.exceptions.Timeout:return"请求超时"except requests.exceptions.RequestException as e:returnf"请求失败: {e}"# 示例content_with_timeout = get_webpage_with_timeout('https://www.example.com', 5) # 超时时间为 5 秒print(content_with_timeout[:200])案例26: 添加请求头 (headers)
import requestsdefget_webpage_with_headers(url, headers):"""发送 GET 请求,并添加自定义请求头."""try: response = requests.get(url, headers=headers) response.raise_for_status()return response.textexcept requests.exceptions.RequestException as e:returnf"请求失败: {e}"# 示例custom_headers = {'User-Agent': 'My-Custom-User-Agent/1.0'}content_with_headers = get_webpage_with_headers('https://www.example.com', custom_headers)print(content_with_headers[:200])案例27: 处理cookies
import requestsdefget_cookies_from_url(url):"""获取 URL 返回的 cookies."""try: response = requests.get(url)return response.cookies.get_dict() # 将 Cookies 对象转换为字典except requests.exceptions.RequestException as e:returnf"请求失败: {e}"# 示例cookies = get_cookies_from_url("https://www.example.com")print(f"Cookies: {cookies}")案例28: 发送带有Cookies的请求
import requestsdefget_webpage_with_cookies(url, cookies_dict):"""发送 GET 请求,并附带 cookies."""try: response = requests.get(url, cookies=cookies_dict) response.raise_for_status()return response.textexcept requests.exceptions.RequestException as e:returnf"请求失败: {e}"# 示例cookies_to_send = {'session_id': '1234567890'} # 假设的 cookiescontent_with_cookies = get_webpage_with_cookies('https://www.example.com', cookies_to_send)print(content_with_cookies[:200])案例29: 简单的URL编码
import urllib.parsedefurl_encode_string(string_to_encode):"""对字符串进行 URL 编码."""return urllib.parse.quote(string_to_encode)# 示例encoded_string = url_encode_string("search query with spaces")print(f"URL 编码后的字符串: {encoded_string}") # search%20query%20with%20spaces案例30: 简单的URL解码
import urllib.parsedefurl_decode_string(encoded_string):"""对 URL 编码的字符串进行解码."""return urllib.parse.unquote(encoded_string)# 示例decoded_string = url_decode_string("search%20query%20with%20spaces")print(f"URL 解码后的字符串: {decoded_string}") # search query with spacesPython的 datetime 模块提供了丰富的日期和时间处理功能。
案例31: 获取当前日期和时间
import datetimedefget_current_datetime():"""获取当前日期和时间,返回 datetime 对象."""return datetime.datetime.now()# 示例current_datetime = get_current_datetime()print(f"当前日期时间: {current_datetime}")案例32: 格式化日期和时间
import datetimedefformat_datetime(datetime_obj, format_string="%Y-%m-%d %H:%M:%S"):"""将 datetime 对象格式化为字符串."""return datetime_obj.strftime(format_string)# 示例now = datetime.datetime.now()formatted_datetime = format_datetime(now)print(f"格式化后的日期时间: {formatted_datetime}") # 例如: 2023-10-27 10:30:45案例33: 将字符串解析为日期时间对象
import datetimedefparse_datetime_string(datetime_string, format_string="%Y-%m-%d %H:%M:%S"):"""将字符串解析为 datetime 对象."""try:return datetime.datetime.strptime(datetime_string, format_string)except ValueError:return"日期时间字符串格式错误"# 示例date_string = "2023-10-27 10:30:00"parsed_datetime = parse_datetime_string(date_string)print(f"解析后的 datetime 对象: {parsed_datetime}")案例34: 计算日期时间差
import datetimedefcalculate_datetime_difference(datetime1, datetime2):"""计算两个 datetime 对象的时间差,返回 timedelta 对象."""return datetime2 - datetime1# 示例datetime1 = datetime.datetime(2023, 10, 26)datetime2 = datetime.datetime(2023, 10, 27)time_difference = calculate_datetime_difference(datetime1, datetime2)print(f"时间差: {time_difference}") # 例如: 1 day, 0:00:00案例35: 获取特定日期的年份、月份、日
import datetimedefget_date_components(datetime_obj):"""获取 datetime 对象的年份、月份、日."""return {'year': datetime_obj.year,'month': datetime_obj.month,'day': datetime_obj.day }# 示例now = datetime.datetime.now()date_components = get_date_components(now)print(f"日期组件: {date_components}") # 例如: {'year': 2023, 'month': 10, 'day': 27}案例36: 获取特定时间的小时、分钟、秒
import datetimedefget_time_components(datetime_obj):"""获取 datetime 对象的小时、分钟、秒."""return {'hour': datetime_obj.hour,'minute': datetime_obj.minute,'second': datetime_obj.second }# 示例now = datetime.datetime.now()time_components = get_time_components(now)print(f"时间组件: {time_components}") # 例如: {'hour': 10, 'minute': 45, 'second': 30}案例37: 获取当前时间戳 (秒)
import timedefget_current_timestamp():"""获取当前时间戳 (秒)."""return time.time()# 示例timestamp = get_current_timestamp()print(f"当前时间戳: {timestamp}") # 例如: 1698384000.0案例38: 将时间戳转换为 datetime 对象
import datetimeimport timedeftimestamp_to_datetime(timestamp):"""将时间戳转换为 datetime 对象."""return datetime.datetime.fromtimestamp(timestamp)# 示例timestamp_value = time.time()datetime_from_timestamp = timestamp_to_datetime(timestamp_value)print(f"时间戳转换为 datetime 对象: {datetime_from_timestamp}")案例39: 获取某个月的第一天和最后一天
import datetimeimport calendardefget_month_first_last_day(year, month):"""获取某年某月的第一天和最后一天.""" first_day = datetime.date(year, month, 1) last_day = datetime.date(year, month, calendar.monthrange(year, month)[1])return {'first_day': first_day,'last_day': last_day }# 示例month_days = get_month_first_last_day(2023, 10)print(f"2023年10月的第一天和最后一天: {month_days}") # {'first_day': datetime.date(2023, 10, 1), 'last_day': datetime.date(2023, 10, 31)}案例40: 增加或减少日期
import datetimedefadd_days_to_date(date_obj, days_to_add):"""给日期增加指定天数.""" delta = datetime.timedelta(days=days_to_add)return date_obj + deltadefsubtract_days_from_date(date_obj, days_to_subtract):"""给日期减少指定天数.""" delta = datetime.timedelta(days=days_to_subtract)return date_obj - delta# 示例today = datetime.date.today()future_date = add_days_to_date(today, 7) # 7 天后past_date = subtract_days_from_date(today, 3) # 3 天前print(f"7 天后: {future_date}, 3 天前: {past_date}")最后,我们来看一些常用的实用工具和编程技巧。
案例41: 生成随机整数
import randomdefgenerate_random_integer(start, end):"""生成指定范围内的随机整数."""return random.randint(start, end)# 示例random_number = generate_random_integer(1, 100)print(f"随机整数 (1-100): {random_number}")案例42: 生成随机浮点数
import randomdefgenerate_random_float(start, end):"""生成指定范围内的随机浮点数."""return random.uniform(start, end)# 示例random_float = generate_random_float(0, 1)print(f"随机浮点数 (0-1): {random_float}")案例43: 从列表中随机选择一个元素
import randomdefchoose_random_item_from_list(data_list):"""从列表中随机选择一个元素."""ifnot data_list:return"列表为空"return random.choice(data_list)# 示例my_list = ['apple', 'banana', 'cherry']random_item = choose_random_item_from_list(my_list)print(f"随机选择的元素: {random_item}")案例44: 打乱列表顺序
import randomdefshuffle_list(data_list):"""打乱列表顺序 (原地修改).""" random.shuffle(data_list)return data_list# 示例my_list = [1, 2, 3, 4, 5]shuffled_list = shuffle_list(my_list.copy()) # 避免修改原列表print(f"打乱后的列表: {shuffled_list}")案例45: 计算代码运行时间
import timedefcalculate_execution_time(func, *args, **kwargs):"""计算函数运行时间 (秒).""" start_time = time.time() result = func(*args, **kwargs) end_time = time.time() execution_time = end_time - start_timereturn execution_time, result # 返回运行时间和函数结果# 示例函数 (计算平方和)defsum_of_squares(n):return sum([i**2for i in range(n)])execution_time, result = calculate_execution_time(sum_of_squares, 100000)print(f"函数运行时间: {execution_time:.4f} 秒, 结果: {result}")案例46: 简单的命令行参数解析
import argparsedefparse_command_line_arguments():"""使用 argparse 解析命令行参数.""" parser = argparse.ArgumentParser(description="一个简单的命令行工具") parser.add_argument("filename", help="要处理的文件名") parser.add_argument("-n", "--number", type=int, help="一个数字参数", default=10) args = parser.parse_args()return args# 示例 (在命令行中运行: python your_script_name.py input.txt -n 20)# args = parse_command_line_arguments()# print(f"文件名: {args.filename}, 数字参数: {args.number}")案例47: 密码生成器 (简单版)
import randomimport stringdefgenerate_password(length=12):"""生成指定长度的随机密码,包含字母和数字.""" characters = string.ascii_letters + string.digits password = ''.join(random.choice(characters) for i in range(length))return password# 示例password = generate_password(16)print(f"随机密码: {password}")案例48: 简单的邮件发送 (需要配置SMTP服务器)
import smtplibfrom email.mime.text import MIMETextdefsend_email(sender_email, sender_password, receiver_email, subject, message, smtp_server='smtp.example.com', smtp_port=587):"""发送邮件 (需要配置SMTP服务器).""" msg = MIMEText(message) msg['Subject'] = subject msg['From'] = sender_email msg['To'] = receiver_emailtry: server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 启用 TLS 加密 server.login(sender_email, sender_password) # 登录邮箱 server.sendmail(sender_email, [receiver_email], msg.as_string()) server.quit()return"邮件发送成功"except Exception as e:returnf"邮件发送失败: {e}"# **请注意:** 出于安全考虑,不要在代码中硬编码您的邮箱密码。# 示例 (请替换为您的邮箱信息和目标邮箱)# sender = "your_email@example.com"# password = "your_email_password"# receiver = "recipient_email@example.com"# email_result = send_email(sender, password, receiver, "测试邮件", "这是一封测试邮件。")# print(email_result)案例49: 简单的文本替换
defreplace_text_in_string(text, old_substring, new_substring):"""在字符串中替换子字符串."""return text.replace(old_substring, new_substring)# 示例original_text = "Hello World! World is great."replaced_text = replace_text_in_string(original_text, "World", "Python")print(f"替换后的文本: {replaced_text}") # Hello Python! Python is great.案例50: 使用 try-except 处理异常
defsafe_integer_division(numerator, denominator):"""安全地进行整数除法,处理除零异常."""try: result = numerator / denominatorreturn resultexcept ZeroDivisionError:return"除数不能为零"except TypeError:return"输入类型错误,请输入数字"# 示例division_result1 = safe_integer_division(10, 2)division_result2 = safe_integer_division(10, 0)division_result3 = safe_integer_division(10, 'a')print(f"10 / 2 = {division_result1}") # 5.0print(f"10 / 0 = {division_result2}") # 除数不能为零print(f"10 / 'a' = {division_result3}") # 输入类型错误,请输入数字结语:
这50个Python代码小案例只是Python强大功能的冰山一角。希望这些“拿来即用”的代码片段能帮助您更高效地完成日常编程任务!
长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等 推荐阅读
从 Exception 到 BaseException:构建符合 Python 哲学
点击 阅读原文 了解更多