猿问

在循环理解中使用 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 ...


森林海
浏览 188回答 2
2回答

阿晨1998

你可以做:# import librariesimport os,pandas# list filenames, assuming your path is './'files = [i for i in os.listdir('./') if i[:3]=='GSE' and i[-3:]=='txt']# get contents of filescontents = []for i in files:    with open(i) as f: contents.append(f.read().strip())# into a nice table table = pandas.DataFrame(contents, index=files, columns=['text'])
随时随地看视频慕课网APP

相关分类

Python
我要回答