在行中插入一个单词并使用Python保存文件

2024-05-14 10:48:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目录中有很多这样的行

cd /oasis/projects/nsf/ets100/
oconv /oasis/projects/nsf/ets100/rla

我想插入单词“sky/”,所以第二行是这样的

oconv /oasis/projects/nsf/sky/ets100/rla

最好的方法是什么?你知道吗

我知道代码的开头是这样的:

path = r"c:\test"
    for root, subFolders, files in os.walk(path):
        for file in files:
            with open(os.path.join(root, file), 'r') as fRead:
                if line.startswith("oconv"):

Tags: pathin目录forosrootfilesfile
2条回答

可以使用regex更新字符串:

import os
import re

path = r"c:\test"
for root, subFolders, files in os.walk('test'):
    for file in files:
        with open(os.path.join(root, file), 'r+') as fh: #open the file with 'r+' to read and write
            content = fh.read()
            new_content = re.sub(r'oconv \/oasis\/projects\/nsf\/(.*)', r'oconv /oasis/projects/nsf/sky/\1', content) #replace strings in file
            fh.seek(0)
            fh.truncate()
            fh.write(new_content)

你可以这样做

def replace_line(file):
   with open(os.path.abspath(file), 'r') as file_obj:
       data = file_obj.readlines()
   for index, lines in enumerate(data):
       if lines.startswith('oconv'):
          data[index] = lines.replace('/nsf/', '/nsf/sky/')
   with open(os.path.abspath(file), 'w') as file_obj:
       file_obj.writelines(data)


path = r"c:\test"
    for root, subFolders, files in os.walk(path):
        for file in files:
            replace_line(file)

相关问题 更多 >

    热门问题