我正在嘗試替換文本檔案中以:setAttr“.os”開頭并以:setAttr“.sf”結尾的所有多行。
由于開始和結束之間的線是未知的和可變的......
問題是它只替換一次出現,如果變數old找到不同的結果。
firstFrame = str(80)
lastFrame = str(200)
begin = 'setAttr ".os" '
ending = 'setAttr ".sf" '
new = """setAttr ".os" """ firstFrame """;
setAttr ".oe" """ lastFrame """;
setAttr ".ss" """ firstFrame """;
setAttr ".se" """ lastFrame """;
"""
with open('pathToFile.txt', 'r') as read_stream:
file1 = read_stream.read()
f1_start = file1.index(begin)
f1_end = file1.index(ending, f1_start)
old = file1[f1_start:(f1_end 18)]
file1 = file1.replace(old, new )
with open('pathToFile.txt', 'w') as read_stream:
read_stream.write(file1)
我認為我的錯誤在于:
old = file1[f1_start:(f1_end 18)]
但我不知道如何使這條線變數,
uj5u.com熱心網友回復:
在閱讀原始檔案時,您不能將行寫入原始檔案。我在這里使用了一個單獨的名稱。您必須在最后重命名/洗掉。
我會一行一行地做。
firstFrame = '80'
lastFrame = '200'
begin = 'setAttr ".os" '
ending = 'setAttr ".sf" '
new = f"""\
setAttr ".os" {firstFrame};
setAttr ".oe" {lastFrame};
setAttr ".ss" {firstFrame};
setAttr ".se" {lastFrame};"""
fout = open('pathToNewFile.txt','w')
looking = begin
skipping = False
for line in open('pathToFile.txt'):
if line.startswith(begin):
skipping = True
fout.write(new)
elif line.startswith(ending):
skipping = False
elif not skipping:
fout.write(line)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/406933.html
標籤:
上一篇:使用heroku在節點服務器上托管客戶端證書和密鑰是否安全
下一篇:如何使用兩個鍵從JSON中讀取
