只用于记录最近的一些日常程序。
目录
前言
Python 是一种高级编程语言,因其简洁易读、功能强大和广泛的应用而受到许多开发者的喜爱。
一、文件和目录管理
- os 和 shutil:处理文件和目录操作,如复制、移动、删除文件。
 - glob:文件模式匹配,查找符合特定模式的文件。
 
            
            
              python
              
              
            
          
          import os
import shutil
# 创建目录
os.makedirs('example_dir', exist_ok=True)
# 创建文件
with open('example_dir/example_file.txt', 'w') as f:
    f.write('Hello, World!')
# 移动文件
shutil.move('example_dir/example_file.txt', 'example_dir/new_file.txt')
# 删除文件
os.remove('example_dir/new_file.txt')
# 删除目录
os.rmdir('example_dir')
        1.读取文件结构
读取所有文件夹和文件
下面是一个 Python 脚本,它可以读取当前文件夹并打印出文件框架。这个脚本使用 os 模块来遍历文件夹中的文件和子文件夹,并打印出每个文件和文件夹的结构。
            
            
              python
              
              
            
          
          import os
def print_directory_structure(root_dir, indent=""):
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            print(f"{indent}[Folder] {item}")
            print_directory_structure(item_path, indent + "  ")
        else:
            print(f"{indent}[File] {item}")
if __name__ == "__main__":
    current_directory = os.getcwd()
    print(f"Directory structure of: {current_directory}")
    print_directory_structure(current_directory)
        这个脚本会输出当前文件夹及其所有子文件夹和文件的层级结构。例如:
Directory structure of: /path/to/current/directory
Folder\] subfolder1 \[File\] file1.txt \[File\] file2.txt \[Folder\] subfolder2 \[Folder\] subsubfolder1 \[File\] file3.txt \[File\] file4.txt \[File\] file5.txt
如果想要的文件结构输出应该是以层级结构显示的目录和文件。下面是一个脚本,它会按照你所描述的方式来打印当前文件夹的文件框架。
            
            
              python
              
              
            
          
          import os
def print_directory_structure(root_dir, indent=""):
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            print(f"{indent}--- {item}/")
            print_directory_structure(item_path, indent + "    ")
        else:
            print(f"{indent}--- {item}")
if __name__ == "__main__":
    current_directory = os.getcwd()
    print(f"--- {os.path.basename(current_directory)}/")
    print_directory_structure(current_directory, "    ")
        运行这个脚本后,会输出当前文件夹及其所有子文件夹和文件的结构。例如:
--- current_directory/
--- subfolder1/
--- file1.txt
--- file2.txt
--- subfolder2/
--- subsubfolder1/
--- file3.txt
--- file4.txt
--- file5.txt
可以将将文件结构输出到 readme.txt 文件中:
            
            
              python
              
              
            
          
          import os
def save_directory_structure_to_file(root_dir, file, indent=""):
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            file.write(f"{indent}--- {item}/\n")
            save_directory_structure_to_file(item_path, file, indent + "    ")
        else:
            file.write(f"{indent}--- {item}\n")
if __name__ == "__main__":
    current_directory = os.getcwd()
    with open("readme.txt", "w") as file:
        file.write(f"--- {os.path.basename(current_directory)}/\n")
        save_directory_structure_to_file(current_directory, file, "    ")
        运行这个脚本后,会在当前目录下生成一个 readme.txt 文件,内容是当前文件夹及其所有子文件夹和文件的结构。例如:
--- current_directory/
--- subfolder1/
--- file1.txt
--- file2.txt
--- subfolder2/
--- subsubfolder1/
--- file3.txt
--- file4.txt
--- file5.txt
读取到N级子文件夹和文件
可以通过限制递归的深度来实现只读取三级子文件夹。下面是修改后的脚本,将文件结构输出到 readme.txt 文件中,并且只读取到三级子文件夹:
            
            
              python
              
              
            
          
          import os
def save_directory_structure_to_file(root_dir, file, indent="", depth=0, max_depth=3):
    if depth > max_depth:
        return
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            file.write(f"{indent}--- {item}/\n")
            save_directory_structure_to_file(item_path, file, indent + "    ", depth + 1, max_depth)
        else:
            file.write(f"{indent}--- {item}\n")
if __name__ == "__main__":
    current_directory = os.getcwd()
    with open("readme.txt", "w") as file:
        file.write(f"--- {os.path.basename(current_directory)}/\n")
        save_directory_structure_to_file(current_directory, file, "    ", 1, 3)
        运行这个脚本后,readme.txt 文件的内容将是当前文件夹及其最多三级子文件夹和文件的结构。例如:
--- current_directory/
--- subfolder1/
--- file1.txt
--- file2.txt
--- subfolder2/
--- subsubfolder1/
--- file3.txt
--- file4.txt
--- file5.txt
只读取到N级子文件夹
例如最多只读取四级子文件夹,并且不包含文件名称:
            
            
              python
              
              
            
          
          import os
def save_directory_structure_to_file(root_dir, file, indent="", depth=0, max_depth=4):
    if depth > max_depth:
        return
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            file.write(f"{indent}--- {item}/\n")
            save_directory_structure_to_file(item_path, file, indent + "    ", depth + 1, max_depth)
if __name__ == "__main__":
    current_directory = os.getcwd()
    with open("readme.txt", "w") as file:
        file.write(f"--- {os.path.basename(current_directory)}/\n")
        save_directory_structure_to_file(current_directory, file, "    ", 1, 4)
        运行这个脚本后,readme.txt 文件的内容将是当前文件夹及其最多四级子文件夹的结构,不包含文件名称。例如:
--- current_directory/
--- subfolder1/
--- subfolder2/
--- subsubfolder1/
--- subsubsubfolder1/
--- subfolder3/
读取每级别子文件夹,不读取文件名称:
            
            
              python
              
              
            
          
          import os
def save_directory_structure_to_file(root_dir, file, indent=""):
    for item in os.listdir(root_dir):
        item_path = os.path.join(root_dir, item)
        if os.path.isdir(item_path):
            file.write(f"{indent}--- {item}/\n")
            save_directory_structure_to_file(item_path, file, indent + "    ")
if __name__ == "__main__":
    current_directory = os.getcwd()
    with open("readme.txt", "w") as file:
        file.write(f"--- {os.path.basename(current_directory)}/\n")
        save_directory_structure_to_file(current_directory, file, "    ")
        2.遍历文件并处理(复制、删除)
遍历指定文件夹下的文件,并根据文件的类型或文件名称是否包含 "kgtbg" 来选择进行处理(复制到指定文件夹或删除)。你可以根据实际需求调整处理逻辑和目标文件夹路径。
            
            
              python
              
              
            
          
          import os
import shutil
def process_files(src_dir, dest_dir, keyword="kgtbg"):
    # 确保目标文件夹存在
    os.makedirs(dest_dir, exist_ok=True)
    
    for root, dirs, files in os.walk(src_dir):
        for file_name in files:
            file_path = os.path.join(root, file_name)
            
            if keyword in file_name:
                # 复制到指定文件夹
                shutil.copy(file_path, dest_dir)
                print(f"Copied: {file_path} to {dest_dir}")
                # 删除原文件
                os.remove(file_path)
                print(f"Deleted: {file_path}")
            else:
                print(f"Skipped: {file_path}")
if __name__ == "__main__":
    source_directory = 'path/to/source_directory'  # 替换为源文件夹路径
    destination_directory = 'path/to/destination_directory'  # 替换为目标文件夹路径
    process_files(source_directory, destination_directory)
        说明:
- 
os.makedirs(dest_dir, exist_ok=True):确保目标文件夹存在。如果目标文件夹不存在,os.makedirs会创建它。 - 
os.walk(src_dir):遍历源文件夹及其所有子文件夹中的文件。 - 
if keyword in file_name:检查文件名是否包含指定的关键字"kgtbg"。如果包含,执行处理操作。 - 
shutil.copy(file_path, dest_dir):将符合条件的文件复制到目标文件夹。 - 
os.remove(file_path):删除原文件。 - 
print:用于打印处理过程中的信息,便于跟踪操作。 
二、数据分析和处理
- Pandas:数据处理和分析,尤其适用于表格数据。
 - NumPy:数值计算,支持大规模的数组和矩阵运算。
 - SciPy:科学计算,包括优化、线性代数、积分等。
 
Pandas 数据分析示例
            
            
              python
              
              
            
          
          import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 显示前几行
print(df.head())
# 数据统计
print(df.describe())
# 数据过滤
filtered_df = df[df['column_name'] > 10]
# 保存处理后的数据
filtered_df.to_csv('filtered_data.csv', index=False)
        三、数据可视化
- Matplotlib:生成静态、动态和交互式的图表。
 - Seaborn:基于 Matplotlib,提供更高级的统计图表。
 - Plotly:交互式图表和仪表盘。
 
Matplotlib 示例
            
            
              python
              
              
            
          
          import matplotlib.pyplot as plt
# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 创建图表
plt.plot(x, y, marker='o')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Sample Plot')
plt.grid(True)
plt.savefig('plot.png')  # 保存图表
plt.show()  # 显示图表
        四、文本处理
- re:正则表达式,用于复杂的字符串匹配和替换。
 - nltk 和 spaCy:自然语言处理库,用于文本分析和处理。
 
            
            
              python
              
              
            
          
          import re
text = "The rain in Spain stays mainly in the plain."
# 查找所有出现的 'in'
matches = re.findall(r'in', text)
print(f'Matches: {matches}')
# 替换 'in' 为 'on'
new_text = re.sub(r'in', 'on', text)
print(f'New Text: {new_text}')
        总结
以上就是今天要讲的内容,本文仅仅简单介绍了一些常用 Python 程序的示例代码,涵盖数据分析、数据可视化、文件管理等。