2013-04-07 71 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