Python常用操作汇总

Python 中 查看和探索对象(如 DataFrame、AnnData、Numpy 数组、自定义类等)常用方法汇总,这对调试和数据理解非常重要:


✅ Python 查看对象的常用方法汇总


🔹 1. 通用对象检查(适用于任何 Python 对象)

命令 说明
type(obj) 查看对象类型
dir(obj) 查看对象支持的属性和方法(最常用)
vars(obj) 查看对象的 __dict__ 属性(适用于类实例)
help(obj) 查看对象的说明文档
isinstance(obj, ClassName) 判断对象是否是某类的实例
hasattr(obj, 'attr') 是否具有某属性
getattr(obj, 'attr') 获取属性的值

🔹 2. Numpy 数组

import numpy as np
x = np.array([[1, 2], [3, 4]])

x.shape       # 查看维度
x.dtype       # 数据类型
x.ndim        # 维度数量
x.size        # 总元素个数
x.itemsize    # 单个元素字节数
x.nbytes      # 总字节数

🔹 3. Pandas DataFrame / Series

import pandas as pd
df = pd.read_csv('file.csv')

df.shape           # 行列数
df.columns         # 列名
df.dtypes          # 每列的数据类型
df.info()          # 数据整体信息
df.head()          # 查看前几行
df.tail()          # 查看后几行
df.describe()      # 简要统计描述
df.index           # 索引信息
df.values          # 转换为numpy数组
df.isnull().sum()  # 缺失值统计

🔹 4. Scanpy AnnData 对象

import scanpy as sc
adata = sc.read_h5ad('data.h5ad')

type(adata)              # <class 'anndata._core.anndata.AnnData'>
adata.shape              # (cells, genes)
adata.obs                # 细胞元数据(DataFrame)
adata.var                # 基因元数据(DataFrame)
adata.X                  # 表达矩阵(稀疏或 dense)
adata.raw                # 原始表达数据(可选)
adata.uns               # 存储分析结果(dict)
adata.obsm              # 存储低维坐标(PCA, UMAP等)
adata.var_names         # 基因名
adata.obs_names         # 细胞名
adata.is_view           # 是否是一个视图

adata.obs.columns       # 查看 obs 的列
adata.var.columns       # 查看 var 的列
adata.obsm.keys()       # 查看 obsm 中存储的坐标名
adata.uns.keys()        # 查看分析结果的键名

🔹 5. 类与实例对象

class Person:
    def __init__(self, name):
        self.name = name
        self.age = 18

p = Person("Tom")

vars(p)     # {'name': 'Tom', 'age': 18}
dir(p)      # 查看方法列表
hasattr(p, 'name')   # True
getattr(p, 'age')    # 18

🔹 6. 补充调试建议

# 用 pprint 友好打印嵌套结构(如 dict、list)
from pprint import pprint
pprint(adata.uns)

# 用 json 更美观地显示字典(需先转换)
import json
print(json.dumps(dict(adata.uns), indent=4, default=str))

🧠 小技巧

你可以用 IPython / Jupyter Notebook 中的:

obj?        # 快速查看文档(如 `adata?`)
obj??       # 查看源码(如 `sc.pp.pca??`)

以下是 Python 文件与目录操作 中最常用和实用的函数、方法和模块的详尽总结,适用于文件读取、写入、管理、目录导航、压缩文件处理等多种情境。


🧱 模块一览

模块名 主要用途
os 文件路径、目录、系统级操作
pathlib 面向对象的路径处理(推荐用法)
shutil 高级文件/目录复制与移动
open() 读写普通文本或二进制文件
gzip 解压 .gz 文件
glob 文件通配符查找(如 *.csv

📁 路径与目录操作

✅ 使用 os 模块

import os

os.getcwd()                # 获取当前工作目录
os.chdir('path')           # 改变当前工作目录
os.listdir('path')         # 列出目录中的所有文件和子目录
os.mkdir('new_folder')     # 创建单层目录
os.makedirs('a/b/c')       # 创建多层目录
os.rmdir('folder')         # 删除空目录
os.remove('file.txt')      # 删除文件
os.rename('old', 'new')    # 重命名文件或目录
os.path.exists('file')     # 判断路径是否存在
os.path.isfile('file')     # 是否是文件
os.path.isdir('folder')    # 是否是目录
os.path.getsize('file')    # 获取文件大小(字节)

✅ 使用 pathlib(现代推荐)

from pathlib import Path

p = Path('.')
p.cwd()                    # 当前路径
list(p.iterdir())          # 列出目录下所有内容
(p / 'file.txt').exists()  # 路径是否存在
(p / 'folder').is_dir()    # 是否是目录
(p / 'file.txt').is_file() # 是否是文件
(p / 'new.txt').unlink()   # 删除文件
(p / 'new_dir').mkdir()    # 创建目录

📄 文件读写操作

✅ 打开并读取文本文件

with open('file.txt', 'r', encoding='utf-8') as f:
    content = f.read()         # 读取全部内容
    lines = f.readlines()      # 读取为行列表

✅ 写入或追加

# 覆盖写入
with open('file.txt', 'w') as f:
    f.write('Hello, world!\n')

# 追加内容
with open('file.txt', 'a') as f:
    f.write('Add another line\n')

✅ 二进制读写

# 读取图片或模型数据
with open('image.jpg', 'rb') as f:
    binary = f.read()

# 写入二进制数据
with open('copy.jpg', 'wb') as f:
    f.write(binary)

📦 处理压缩文件(.gz)

import gzip

# 读取 gzip 压缩文本文件
with gzip.open('data.csv.gz', 'rt') as f:
    for line in f:
        print(line.strip())

# 写入 gzip 文件
with gzip.open('out.txt.gz', 'wt') as f:
    f.write("Some text\n")

📑 批量查找文件(使用 glob

import glob

files = glob.glob('*.csv')           # 当前目录下所有 CSV 文件
files = glob.glob('data/*.h5')       # data 子目录下的 .h5 文件

📋 高级文件操作(使用 shutil

import shutil

shutil.copy('a.txt', 'b.txt')        # 复制文件
shutil.copytree('src', 'dest')       # 复制整个目录
shutil.move('a.txt', 'folder/')      # 移动文件
shutil.rmtree('folder')              # 删除整个目录(即使非空)

📦 获取文件属性

import os
from datetime import datetime

file = 'test.txt'
print(os.path.getsize(file))         # 文件大小(字节)
print(os.path.getmtime(file))        # 修改时间(timestamp)
print(datetime.fromtimestamp(os.path.getmtime(file)))  # 转换为人类可读

✅ 推荐:常用文件操作封装示例函数

def read_text(path):
    with open(path, 'r', encoding='utf-8') as f:
        return f.read()

def write_text(path, content):
    with open(path, 'w', encoding='utf-8') as f:
        f.write(content)

在 Python 中,如果你想查看当前作用域中所有对象(变量)以及它们是否包含自定义方法,你可以使用以下技巧来查看对象的方法,包括自定义的。


✅ 1. 查看所有变量 / 对象

使用 globals()locals() 查看当前命名空间的对象:

globals().keys()

或:

locals().keys()

✅ 2. 查看某个对象的方法

对某个对象 obj,使用 dir(obj) 可以列出它所有的属性和方法:

dir(obj)

这会包含内置属性(如 __init__, __class__ 等),你可以过滤掉这些魔术方法:

[name for name in dir(obj) if not name.startswith('__')]

✅ 3. 筛选自定义方法(非内置的)

如果你想查看某个对象的自定义方法,可以使用 inspect 模块:

import inspect

methods = inspect.getmembers(obj, predicate=inspect.ismethod)
print(methods)

或者如果是函数(函数对象或类的方法):

functions = inspect.getmembers(obj, predicate=inspect.isfunction)

✅ 4. 查看所有自定义类和函数

查看你定义的类和函数(忽略内建和导入的):

[name for name, val in globals().items() if inspect.isfunction(val) or inspect.isclass(val)]

🔍 示例

class MyClass:
    def custom_method(self):
        pass

obj = MyClass()

import inspect
print([name for name, _ in inspect.getmembers(obj, predicate=inspect.ismethod) if not name.startswith("__")])

输出:

['custom_method']

posted @ 2025-05-21 13:06  tomorgen  阅读(39)  评论(0)    收藏  举报