【问题标题】:How to open multiple files in loop, in python如何在循环中打开多个文件,在python中
【发布时间】:2020-01-26 06:28:44
【问题描述】:

我是 python 新手。 我想在 Python 中打开多个文件。我可以使用open() 函数打开它们中的每一个。 我不确定格式。

with open("/test/filename.css", "r") as f:
     s = f.readlines()
     print(s)

我可以打开一个文件,但我不知道如何打开多个文件。 这是我拥有的代码。在live_filename() 函数中有很多文件。

inputfiles = live_filename()
    for live in inputfiles:
        with open("/test/............. .css, "r") as f:

我不知道如何将代码格式放在空间中。我认为live 变量是一个不能连接str 的元组。我该怎么办?

【问题讨论】:

标签: python


【解决方案1】:

像打开一个一样打开每个,然后将它们追加到一个列表中:

import os

folderpath = r"D:\my_data" # make sure to put the 'r' in front
filepaths  = [os.path.join(folderpath, name) for name in os.listdir(folderpath)]
all_files = []

for path in filepaths:
    with open(path, 'r') as f:
        file = f.readlines()
        all_files.append(file)

现在,all_files[0] 保存加载的第一个文件,all_files[1]保存第二个,依此类推。


更新:对于同一文件夹中的所有文件:首先,获取文件夹路径(在 Windows 上,like this)。假设它是"D:\my_data"。然后,您可以像上面的脚本一样获取文件的所有 filepaths

【讨论】:

  • 我明白了。我在函数 live_filename() 中创建它。我必须再做一次吗?
  • @lalin 只需确保 filepaths 包含您计划加载的文件的所有路径 - 您可以通过 print(filepaths) 进行检查。如果是这样,无需重复。
  • 我明白了。我会试试这个。 :)
  • 我试试 this.but 错误显示 ==> 预期的 str、字节或 os.PathLike 对象,而不是元组
  • @lalin 如果您没有更改您的live_filename() 并且它具有相同的输出,那么这就是问题所在。只是不要使用它 - 而是按照我的回答说明一步一步地操作。
【解决方案2】:

你可以这样做:

folder = "..." # Absolute path to folder in which the files reside
files_to_read = [("filename.css","FileName"),( "filename2.css","Filename2")]
for (file, _) in files_to_read:
    filepath = os.path.join(folder, file)
    with open(filepath, "r") as f:
        s = f.readlines()
        print(s)

【讨论】:

  • 我知道了,但如果我有 100 个文件。我该怎么办?
  • @lalin 这些文件都在同一个文件夹吗?
  • @OverLordGoldDragon 是在同一个文件夹中。
  • @lalin 你希望它被并行处理吗?您正在从函数接收文件路径,对吗?您能否显示live_filename() 的示例输出
  • @MjZac 是的,我从函数接收文件路径。输出为:('home', 'Home') ('fun', 'Fun')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多