在行中插入一个单词,并使用Python保存文件
我在一个目录中有很多这样的行在行中插入一个单词,并使用Python保存文件,python,Python,我在一个目录中有很多这样的行 cd /oasis/projects/nsf/ets100/ oconv /oasis/projects/nsf/ets100/rla oconv /oasis/projects/nsf/sky/ets100/rla 我想插入单词“sky/”,第二行是这样的 cd /oasis/projects/nsf/ets100/ oconv /oasis/projects/nsf/ets100/rla oconv /oasis/projects/nsf/sky/ets1
cd /oasis/projects/nsf/ets100/
oconv /oasis/projects/nsf/ets100/rla
oconv /oasis/projects/nsf/sky/ets100/rla
我想插入单词“sky/”,第二行是这样的
cd /oasis/projects/nsf/ets100/
oconv /oasis/projects/nsf/ets100/rla
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"):
你可以这样做
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)
你可以这样做
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)
您可以使用正则表达式更新字符串:
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)
您可以使用正则表达式更新字符串:
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)
您如何知道在字符串中插入“sky”的位置?它是否总是位于路径中最后一个文件夹的第二个之前?路径是否始终以“/oasis/projects/nsf/”开头?使用os.path.split,检查文档:@richflow是的,路径始终以“/oasis/projects/nsf/”开头。您如何知道在字符串中插入“sky”的位置?它是否总是位于路径中最后一个文件夹的第二个之前?路径是否始终以“/oasis/projects/nsf/”开头?使用os.path.split,检查文档:@richflow是的,路径始终以“/oasis/projects/nsf/”开头