2013-04-07 106 views
0

我還是新來的腳本和我不知道最好的方法來完成我想做的事情。這將是我試圖編寫的第一個Python腳本。請注意,我爲此使用Python2.7在.txt文件帶通配符替換字符串與Python

我想編寫一個批處理文件與給定參數的用戶。這個論點將是一條道路。這條道路每天都會改變,並被用來執行工作測試。我想Nightly.bat "build path"

調用它這是我想要完成的任務:

1.批處理文件確保了健康檢查存在的路徑。
2.批處理文件執行與給定變量的Python文件。
3. Python的文件中找到與構建路徑的testrun腳本一個字符串,將替換用給定的變量路徑。
4.批處理文件執行testrun硒腳本。

以下是代碼Python代碼:

test1.txt的內容:

blah 
This is a first string 

nightly.py內容:

import sys 
import shutil 
import os 
import re 

tf = open('tmp', 'a+') 
string = "This is " 

with open('test1.txt') as f: 
    for line in f.readlines(): 
      string = re.sub ('This is .*', 'This is a second string', string) 

shutil.copy('test1.txt', 'tmp') 
tf.write(string) 
f.close() 
tf.close() 

執行nightly.py文件後,這是在tmp文件內容:

blah 
This is a first stringThis is a second String 

我需要這麼This is a first stringThis is a second string

最終更換,tmp文件應具有以下內容:

blah 
This is a second string 

感謝您繼續嘗試。

***************************** 
* Updated for Kirbyfan64sos * 
***************************** 

nightly.py內容:

import sys 
import shutil 
import os 

tf = open('tmp', 'a+') 
with open('test1.txt') as f: 
    for line in f.readlines(): 
     if line == 'This is*': 
      line = 'This is a second string' 
     tf.write(line) 
f.close() 
tf.close() 
shutil.copy('tmp', 'test1.txt') 
os.remove('tmp') 
+3

我找不到一個問題。 – Endoro 2013-04-07 17:07:17

+0

幫助具體是什麼?你遇到了哪些問題/困難? – 2013-04-07 19:19:32

+0

寫入python文件的語法。 – 2013-04-07 19:42:15

回答

0

我終於找到了答案......每晚前

test1.txt的。 PY執行:

blah 
blah 
This is a first string 
blah 
blah 

BTW標籤在代碼中的差異與記事本++

import sys 
import os 
import re 
import shutil 

tf = open('tmp', 'a+') 

with open('test1.txt') as f: 
    for line in f.readlines(): 
     build = re.sub ('This is.*','This is a second string',line) 
     tf.write(build) 
tf.close() 
f.close() 
shutil.copy('tmp', 'test1.txt') 
os.remove('tmp') 

test1.txt的Nightly.py執行後:

blah 
blah 
This is a second string 
blah 
blah 
+0

恭喜!對不起,我忍不住太多。有一個IDE的麻煩,忘了它的一切。 – refi64 2013-04-29 18:09:26

1

代碼應該是這樣的:

import sys 
tf = open('tmp', 'a+') 
with open('WP8974_AudioDecode.html') as f: 
    for line in f.readlines() do: 
     if line == '<td>\\frosty\*</td>': 
      line = '<td>\\frosty\' + sys.argv[1] + '</td>' 
     tf.write(line) 
f.close() 
shutil.copy('tmp', 'WP8974_AudioDecode.html') 
os.remove('tmp') 
+0

感謝您的回覆,我會嘗試。在if行部分,不應該是1'=',因爲我們使用通配符? – 2013-04-07 20:05:28

+0

我得到以下錯誤----- AttributeError:'文件'對象沒有屬性'追加' – 2013-04-07 21:37:10

+0

感謝您對'.write'的更新。問題是這隻有在字符串是靜態的(無通配符)時纔有效。如果我使用通配符,那麼它不會替換字符串。 – 2013-04-07 23:51:07