Python读取文件名并保存在列表中

时间:2016-11-02 03:08:34

标签: python-2.7

我需要读取目录中的所有文件并保存到列表中,然后逐个读取这些文件的列表。 我不想使用类似' glob模块的外部模块'。所以,尝试两种不同的方法:

第一种方法:

import os 
file_list = os.listdir("jsons")

for files in file_list:
    data = open(files,"r")

输出:

  ['A03DUrQz1BM9SQ2.json', 'A04D5V1u1BMxaV6.json', 'A0kxiHL81AN9pH5.json', 'A1Fxs5Ag1A8vuB5.json', 'A2Dsv7RE1BDqYt5.json', 'A2HkZPkn1BpvvG5.json']

但问题是文件名以字符串格式保存,无法打开此文件,因为它使用引号''。

第二种方法:

file_list = os.system("ls jsons/")
**print file_list.split()**
for files in file_list:
    data = open(files,"r")
    print data 

输出:

Traceback (most recent call last):
  File "asn-1_q3.py", line 9, in <module>
    print file_list.split()
AttributeError: 'int' object has no attribute 'split'

这里,它保存为int并且无法拆分文件。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

您需要read您的文件对象和os.path.join文件名与原始目录名称(或者它将查找当前目录中的文件):

import os
import os.path
file_list = os.listdir("jsons")

for file_name in file_list:
    with open(os.path.join("jsons", file_name), "r") as src_file:
        data = src_file.read()
        print(data)

这是一个使用生成器限制内存中数据量的示例(将所有数据加载到数组中):

import os
os.path

def all_file_content(directory_name):
    file_list = os.listdir(directory_name)
    for file_name in file_list:
        with open(os.path.join(directory_name, file_name), "r") as src_file:
            yield src_file.read()

for file_content in all_file_content("jsons"):
    print(file_content)