2016-12-23 62 views
-1

我需要从os.listdir的目录中的文件列表中读取文件的内容。我的工作小脚本如下:从os.listdir()中读取文件的内容()(python)

import os 

path = "/Users/Desktop/test/" 
for filename in os.listdir(path): 
    with open(filename, 'rU') as f: 
     t = f.read() 
     t = t.split() 
     print(t) 

print(t)给我来自所有文件的内容一次出现在目录(path)。

但我喜欢在第一个文件上打印内容,然后打印第二个内容等等,直到从dir中读取所有文件。

请指导!谢谢。

+2

我并不真正了解“所有文件一次”和“第一个文件的内容,第二个的内容等等。它会打印第一个文件的内容,然后打印第二个文件的内容等等(尽管在不同的列表中)。请告诉我们你得到了什么样的产出,以及你期望得到什么。 –

回答

0

您可以打印文件名。 在文件名后面打印内容。

import os 

path = "/home/vpraveen/uni_tmp/temp" 

for filename in os.listdir(path): 

    with open(filename, 'rU') as f: 
     t = f.read() 
     print filename + " Content : " 
     print(t) 
0

os.listdir仅返回文件的名称。你需要os.path.join该名称与文件住在路 - 否则蟒蛇会寻找他们在你当前的工作目录(os.getcwd()),如果出现这种情况并非是一样path蟒蛇会找不到文件:

import os 

path = "/Users/Desktop/test/" 

for filename in os.listdir(path): 
    print(filename) 
    file_path = os.path.join(path, filename) 
    print(file_path) 
    .. 

,如果你有pathlib在您的处置,你还可以:

from pathlib import Path 

path = "/Users/Desktop/test/" 

p = Path(path) 
for file in p.iterdir(): 
    if not file.is_file(): 
      continue 
    print(file) 
    print(file.read_text()) 
0

首先,你应该找到使用os.path.join(path, filename)每个文件的路径。否则,如果更改变量path,则会循环错误的文件。其次,您的脚本已经提供了从第一个文件开始的所有文件的内容。我在脚本中添加了几行以打印文件路径和一个空行,以查看内容结束并开始的位置:

import os 

path = "/Users/Desktop/test/" 

for filename in os.listdir(path): 
    filepath = os.path.join(path, filename) 
    with open(filepath, 'rU') as f: 
     content = f.read() 
     print(filepath) 
     print(content) 
     print()