【问题标题】:Split strings into variables line by line, from all files within a directory从目录中的所有文件中将字符串逐行拆分为变量
【发布时间】:2021-09-05 21:38:00
【问题描述】:

我将文件存储在目录中。 所有文件都包含这样的路径/路径,或者它们是空的,文件 f:

folder1\folder2\Module.c
folder1\folder3\Module1.c
folder1\folder4\Module2.c

我需要一些函数,它会一一遍历所有文件中的所有行,拆分字符串并分配给变量:

folder1\folder2\Module.c -> variableA = folder1, variable2 = folder2, variable 3 = Module.c

然后我必须对这个变量做一些事情,然后继续第二行:

  folder1\folder3\Module1.c -> variableA = folder1, variable2 = folder3, variable 3 = Module1.c

已经尝试过这样的事情:

for f in files:
    with open(f, "r") as file:
        content = file.read()
        lines = content.split('\n')
        line = lines.split('\\', maxsplit=3)
        new_lines = []
        for l in line:
            new_lines.append(line)
        with open(f, "w") as file:
            file.write("\n".join(new_lines))

非常欢迎任何帮助和帮助。 实现这一目标的最佳方法是什么?

谢谢!

【问题讨论】:

  • 你已经做了什么尝试?
  • 我现在要编辑

标签: python string file variables split


【解决方案1】:
def function(filename):
    with open(filename, 'r') as file:
        content = file.read().split('\n')
        for line in content:
            if not line: continue
            var1, var2, var3 = line.split('\\')
            # do your thing with var1, var2, var3
            # print(var3)


# in your main code #
for filename in filenames:
    function(filename)

所以content 将您正在阅读的文件中的所有行存储在一个列表中。每个列表项是一行。

['folder1\\folder2\\Module.c', 'folder1\\folder3', '\\Module1.c', 'folder1\\folder4\\Module2.c']

然后迭代认为content 列表,.split('\\') 方法将每一行按\ 字符分割

这就是你要找的答案吗?

【讨论】:

  • for line in file: 比在换行符上拆分然后迭代更容易、更惯用。另外,由于file 是一个内置函数,使用另一个变量名(如fp,用于filepointer`)可能会更好。
  • 可能需要加回maxsplit=3参数。
  • 我想这可能是它!我会在我测试解决方案后立即通知您
  • 我不断收到错误:没有足够的值来解压(预期为 3,得到 1),不确定如何处理空文件,因为文件夹中有一些
  • 空文件完全是空的吗?有时它们仍然会包含一个空行,其中没有字符,但它仍然是 1 行并且不是 100% 空的。当前代码适用于完全空的文件,因为 content 将是一个空列表,并且永远不会进入 for循环。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2018-08-03
  • 2019-02-05
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多