【问题标题】:Python change strings line by line in all files within a directoryPython在目录中的所有文件中逐行更改字符串
【发布时间】:2021-06-16 09:10:54
【问题描述】:

所以我有一些文件位于目录中。 有些文件包含这样的路径,有些是空的:C:\d\folder\project\folder\Folder1\Folder2\Folder3\Module.c

仅通过从末尾数反斜杠来削减它的最佳方法是什么:所以在这种情况下,我们需要在倒数时削减第 4 个反斜杠之后的所有内容:

Folder1\Folder2\Folder3\Module.c

我需要一些函数来遍历所有文件并在文件的每一行上执行此操作。

由于某种原因无法运行的当前代码是:

directory = os.listdir(//path_to_dir//)
for file in directory:
    with open (file) as f:
        for s in f:
            print('\\'.join(s.split('\\')[-4:])) 

【问题讨论】:

  • 抱歉打印件应该在那里,刚刚编辑过
  • 我需要从文件中读取、替换和写入
  • 是文件中的路径
  • @John “不工作”是什么意思?
  • 好吧,字符串没有任何反应,一切都保持不变

标签: python string file directory


【解决方案1】:

我会尝试这样的:

from pathlib import Path

def change(s):
    return '\\'.join(s.split('\\')[-4:])

folder = Path.cwd() / "folder" # here is your folder with files
files = folder.glob("*")

for f in files:
    with open(f, "r") as file:
        content = file.read()

    lines = content.split('\n')
    new_lines = []

    for line in lines:
        new_lines.append(change(line))

    with open(f, "w") as file:
        file.write("\n".join(new_lines))

它在子文件夹folder 中查找所有文件,对每个文件的每一行进行替换并保存文件。

【讨论】:

  • 这太棒了!工作完美,非常感谢!现在很想给你一杯啤酒
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 2017-05-14
  • 2018-12-28
  • 2011-04-22
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 2012-12-23
相关资源
最近更新 更多