我敢肯定,這很簡單,我忽略了。我之前做過這種手術。我正在從我的模板文件htmlfile中讀取數據,然後寫入htmlfile2,這是我的實際報告。在任何人都不喜歡之前,HTML並沒有被用在網站或任何東西上,它只是作爲顯示報告數據的便捷方式。我發現了rgraph,一個用於創建HTML5圖形的工具,並且認爲:「哇,這是完美的!我現在甚至不必編寫GUI,我可以輕鬆地保存我的報告結果!」從一個文件讀到另一個文件
我HTMLFILE有幾行包含文本,它告訴我的計劃提到htmlfile2更換線路的需求意見。如果我使用print語句來檢查哪些循環正在執行,那麼每次都會執行正確的循環。由於某些原因,文字從不改變。就好像寫函數發生了一樣,但是不起作用,它默默地失敗了。模板中的值不在任何地方的python代碼中,因此即使輸入了循環,寫入也不會完成它的工作。我已經嘗試了一些不同的條件,只是爲了看看是否會有任何改變,因此startswith與==等。
def editHTML(self, searchT, replaceT):
if os.path.isfile('C:/MetReports/report.html'):
with open('C:/MetReports/report.html') as htmlfile:
with open('C:/MetReports/report2.html', 'w') as htmlfile2:
for line in htmlfile:
if searchT in line:
if searchT.startswith('REP1'):
tester = "\t\t\tvar meter = new RGraph.Meter('cvs', 0,100, " + str(replaceT) + ") //REP1\n"
htmlfile2.write(tester)
elif searchT == 'REP2':
tester2 = "\t\t\tvar meter = new RGraph.Meter('cvs2', 0,100, " + str(replaceT) + ") //REP2\n"
htmlfile2.write(tester2)
elif searchT == 'REP3':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs3', 0,1000, " + str(replaceT) + ") //REP3\n")
elif searchT == 'REP4':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs4', 0,30, " + str(replaceT) + ") //REP4\n")
elif searchT == 'REP5':
htmlfile2.write("\t\t\tvar meter = new RGraph.Meter('cvs5', 0,30, " + str(replaceT) + ") //REP5\n")
elif searchT not in line:
htmlfile2.write(line)
編輯澄清:
實施例線路從HTMLFILE:
<canvas id="cvs" width="400" height="250" style="border: 1px solid #ccc; border-radius: 15px">[No canvas support]</canvas>
<script>
$(document).ready(function()
{
var meter = new RGraph.Meter('cvs', 0,100, 25) //REP1
.set('angles.start', RGraph.PI - 0.5)
.set('angles.end', RGraph.TWOPI + 0.5)
25是當輸入環和searchT變量在底塗應該改變的數目,以便一個。示例運行如下所示:
editHTML('REP1', 30)
其中應該只更改上面的一行,重新將25與30
編輯2:
這是因爲我認爲,文字是由其他覆蓋if語句運行時,它不應該是。我退出寫的一個後(0)置於」,並檢查了我的文件,並在它的信息是單獨該值正確..
編輯3:在評論
解決方案對於誰曾經有一個人將來會出現類似的問題,請記住,調試,調試,調試!逐個進入你的進程,你會發現你的問題。就我而言,我調用了一個函數,卻沒有意識到它會覆蓋我的輸出文件的內容。輸入文件
寫操作都沒有做什麼?或者只是其中的一部分? – Brionius
似乎所有的,但最後寫拒絕工作。這幾乎就好像htmlfile2.write(line)覆蓋了已更改的行,即使「if searchT not in line」應該阻止它執行此操作。 – TheFunk
您應該提供一個最小的完整示例,包括文件的內容(一行或兩行應該足夠)和調用參數。 – pentadecagon