我需要读取目录中的所有文件并保存到列表中,然后逐个读取这些文件的列表。 我不想使用类似' 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并且无法拆分文件。 我该如何解决?
答案 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)