【问题标题】:Open all json files in a folder [duplicate]打开文件夹中的所有json文件[重复]
【发布时间】:2018-10-22 18:55:50
【问题描述】:

我有一个包含数百个.json 文件的文件夹。 如何一次打开所有这些文件?

我试过了:

for i in os.listdir('C:/Users/new'):
    if i.endswith('.json'):
        files.append(open(i).read)
But I got this error:

FileNotFoundError: [Errno 2] 没有这样的文件或目录:

【问题讨论】:

  • 当您说“一次全部打开”时,您的实际意思是“按顺序读取所有内容吗?
  • 是的。我想阅读所有内容。

标签: python json


【解决方案1】:

i 只是文件名。你应该给出程序的完整路径。

例子:让第一个文件是stackoverflow.json

您尝试使用以下文件名打开:

open('stackoverflow.json', 'r')

你应该做的是:

open('C:/Users/new/stackoverflow.json', 'r')

所以代码应该这样做:

files = []
base_path = 'C:/Users/new'
for i in os.listdir(base_path):
    if i.endswith('.json'):
        full_path = '%s/%s' % (base_path, i)
        files.append(open(full_path, 'r', encoding='utf-8').read())

   print("starting to print json documents...")
   for single_file in files:
      print(single_file)
   print("printing done")

编辑:正如@khelwood 所说,您还应该将read 替换为read()

【讨论】:

  • 也可以考虑os.path.join
  • @user9781180 该问题似乎与上下文无关。你能分享完整的代码和示例输入文件吗?
  • 对不起。我重新运行,它又出现了另一个问题。 NameError:名称“文件”未定义
  • 没关系。出现错误是因为您从未声明名为files 的变量。检查我的答案,我编辑了代码。
  • 我已经尝试了最新的代码,但是我得到了错误:UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 876: character maps to
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多