python - 在循环理解中使用 open() - 获取目录中所有文件的文本内容列表
问题描述
有没有更好的方法来使用with open(file) as f: f.read()
for 循环中的机制 - 即对许多文件进行操作的循环理解?
我正在尝试将其放入数据框中,以便存在从文件到文件内容的映射。
这是我所拥有的 - 但它似乎效率低下且不是pythonic/可读:
documents = pd.DataFrame(glob.glob('*.txt'), columns = ['files'])
documents['text'] = [np.nan]*len(documents)
for txtfile in documents['files'].tolist():
if txtfile.startswith('GSE'):
with open(txtfile) as f:
documents['text'][documents['files']==txtfile] = f.read()
输出:
files text
0 GSE2640_GSM50721.txt | RNA was extracted from lung tissue using a T...
1 GSE7002_GSM159771.txt Array Type : Rat230_2 ; Amount to Core : 15 ; ...
2 GSE1560_GSM26799.txt | C3H denotes C3H / HeJ mice whereas C57 denot...
3 GSE2171_GSM39147.txt | HIV seropositive , samples used to test HIV ...
解决方案
您的代码看起来完全可读。也许您正在寻找这样的东西(仅限 Python3):
import pathlib
documents = pd.DataFrame(glob.glob('*.txt'), columns = ['files'])
documents['text'] = documents['files'].map(
lambda fname: fname.startswith('GSE') and pathlib.Path(fname).read_text())
推荐阅读
- c++ - QT .qss,出现与 style.qss 文件相关的编译错误
- mongodb - MongoDB Aggregate:在项目中过滤
- d3.js - d3.js - 将背景矩形添加到元素组
- go - mangos的问题——Golang包提供的nanomsg总线协议
- python - tkinter - 替换子窗口的图标
- java - 尽管状态为 200,但数据未更新 - 请放心
- nginx - 带有重写数据的 nginx try_files
- javascript - 刷新单个 div
- spring-boot - LEFT JOIN FETCH 不起作用 - Spring 数据 JPA
- java - 嵌入不工作的 JDA 但我的其他嵌入是